Submeter | Todas submissőes | Melhores | Voltar |
CALCULA - Calculando |
A disseminação dos computadores se deve principalmente à capacidade de eles se comportarem como outras máquinas, vindo a substituir muitas destas. Esta flexibilidade é possível porque podemos alterar a funcionalidade de um computador, de modo que ele opere da forma que desejarmos: essa é a base do que chamamos programação.
Tarefa
Sua tarefa é escrever um programa que faça com que o computador opere como uma calculadora simples. O seu programa deve ler expressões aritméticas e produzir como saída o valor dessas expressões, como uma calculadora faria. O programa deve implementar apenas um subconjunto reduzido das operações disponíveis em uma calculadora: somas e subtrações.
Entrada
A entrada é composta de vários conjuntos de testes. A primeira
linha de um conjunto de testes contém um número inteiro
m (1 ≤ m ≤ 100)
, indicando o número de operandos da expressão a ser avaliada. A
segunda linha de um conjunto de testes contém a expressão aritmética a
ser avaliada, no seguinte formato:
X1 s1 X2 s2 ... Xm-1 sm-1 Xm
onde
Xi
,1 ≤ i ≤ m
, é um operando(0 ≤ Xi ≤ 100)
;sj
,1 ≤ j <m
, é um operador, representado pelos símbolos '+
’ ou '-
’;- não há espaços em branco entre operandos e operadores.
O final da entrada é indicado pelo valor m = 0
.
Exemplo de Entrada 3 3+7-22 3 5-10-77 10 1+2+3+4+5+6+7+8+9+10 0
Saída
Para cada conjunto de testes da entrada seu programa deve produzir
três linhas. A primeira linha deve conter um identificador da
expressão, no formato "Teste n
", onde n é numerado a partir de
1
. Na segunda linha deve aparecer o resultado encontrado pelo seu
programa. A terceira linha deve ser deixada em branco. A grafia
mostrada no Exemplo de Saída, abaixo, deve ser seguida rigorosamente.
Exemplo de Saída Teste 1 -12 Teste 2 -82 Teste 3 55
(esta saída corresponde ao exemplo de entrada acima)
Restrições
1 ≤ m ≤ 100
0 ≤ Xi ≤ 100 para todo 1 ≤ i ≤ m
Adicionado por: | Wanderley Guimarăes |
Data: | 2007-02-24 |
Tempo limite: | 1s |
Tamanho do fonte: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Linguagem permitida: | Todas exceto: ASM64 CLOJURE ERL FSHARP JS-RHINO NODEJS PERL6 PY_NBC SCALA TCL VB.NET |
Origem: | Olimpiada Brasileira de Informatica 2001 |
hide comments
2012-12-02 00:08:28 Paulo José Lage Alvarenga
Leandro[FACENS], o teste mais "complexo" seria operar com a maior string. Seria o caso de ter 100 números e somar/subtrair somente 100. Logo, teria 100 números de 3 dígitos, mais 99 operadores, mais o '\0'... talvez seu problema seja o tamanho da string! |
|
2012-08-17 00:39:09 LOL
Estava tendo problema e descobri que tava esquecendo de pular linha na hora do resultado, ficou assim: printf ("Teste %d\n%d\n",j,total); j++; |
|
2012-06-05 14:24:23 Alan Paiva
ou a correçăo esta errando ou tem algo faltando no enunciado, meu programa funciona perfeitamente, como o descrito aqui... e fica dando rsposta errada... |
|
2012-03-14 05:51:12 Soh Eu Que Sei
Năo sei mais o que alterar no meu código. A saída está idęntica ao exibido aqui, além de funcionar corretamente com outros valores. Deveriam descrever melhor o enunciado dos problemas, pois se há algo errado com meu código, năo é algo que esteja escrito nesse enunciado. |
|
2011-12-13 21:06:22 Douglas Eric [Anhanguera-SO]
Giovanni, coloque um System.exit(0); no final do método main |
|
2011-07-21 12:36:52 Giovanni Russo Boscoli
Olá, fiz a soluçăo em C++ e tentei fazer em JAVA, aqui roda perfeitamente, porém quando submeto dá erro em tempo de execuçăo NZEC. Já mudei td q achei q pudesse ser, como int para long, troquei scanner por bufferedreader e etc... Năo sei mais nenhuma alternativa. |
|
2011-02-27 01:05:52 Jorge Augusto C. dos Reis
É só usar o m para termino da entrada... mas no código da soma... basta somar tudo até chegar ao final da string. |
|
2011-02-27 01:04:42 Jorge Augusto C. dos Reis
Resolvi esse problema mas na verdade nem é necessário considerar o número m! Basta fazer um código que soma até encontrar o fim da string pronto! |
|
2010-10-30 02:39:21 Luiz Estevam
Considerem números negativos na primeira posiçăo. |
|
2010-04-03 10:46:37 Fernando [Unicamp]
Esse problema está errado. Năo é necessário deixar uma linha em branco após imprimir o resultado. |