SPOJ Brasil

Problem hidden
This problem was hidden by Editorial Board member probably because it has incorrect language version or invalid test data, or description of the problem is not clear.

SPOJ Problem Set (obi)

1334. Calculando

Problema: CALCULA

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
Linguagem permitida:Todas exceto: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL
Origem:Olimpiada Brasileira de Informatica 2001

hide comments
2012-03-14 06: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 22:06:22 Douglas Eric [Anhanguera-SO]
Giovanni, coloque um

System.exit(0);

no final do método main
2011-07-21 14: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 02: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 02: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 04:39:21 Luiz Estevam
Considerem números negativos na primeira posição.
2010-04-03 12:46:37 Fernando [Unicamp]
Esse problema está errado.
Não é necessário deixar uma linha em branco após imprimir o resultado.
SPOJ System © 2012 Sphere Research Labs | Projekty informatyczne i aplikacje na zamówienie. All Rights Reserved.