Algorithm


Problem Name: beecrowd | 3065

Problem Link: https://www.beecrowd.com.br/judge/en/problems/view/3065

Calculando

 

Por BR Brazil

Timelimit: 1

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.

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 ≤ im, é 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.

 

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 Entrada Exemplo de Saída

3

3+7-22

3

5-10-77

10

1+2+3+4+5+6+7+8+9+10

0

Teste 1

-12


Teste 2

-82


Teste 3

55

 

Code Examples

#1 Code Example with C Programming

Code - C Programming


#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>

#define MAXSIZ 11234

int main(int argc, char **argv)
{

    int n, x, ans, i, j;
    bool signal[MAXSIZ];

    x = 0;
    while (scanf("%d", &n), n)
    {   

        char *tmp;
        char string[MAXSIZ];
        int nums[MAXSIZ];

        scanf("%s", string);

        if (n == 1)
            printf("Teste %d\n%s\n\n", ++x, string);

        else
        {

            i = j = 0;
            while (string[i])
            {

                if (string[i] == '+')
                    signal[j++] = true;
                else if (string[i] == '-')
                    signal[j++] = false;

                ++i;

            }

            i = 0;
            tmp = strtok(string, "+-");
            nums[i++] = atoi(tmp);

            do
            {

                tmp = strtok(NULL, "+-");
                if (tmp)
                    nums[i++] = atoi(tmp);

            } while (tmp);
            
            ans = nums[0];
            for (i = 0; i  <  n - 1; ++i)
                if (signal[i])
                    ans += nums[i + 1];
                else
                    ans -= nums[i + 1];

            printf("Teste %d\n%d\n\n", ++x, ans);

        }

    }
    
    return 0;

}
Copy The Code & Try With Live Editor

#2 Code Example with Javascript Programming

Code - Javascript Programming


const { readFileSync } = require("fs")
const input = readFileSync("/dev/stdin", "utf8").split("\n")

function main() {
	for (let i = 0; i  <  input.length; i += 2) {
		if (input[i] == "0") break

		console.log("Teste %d", (i / 2) + 1)
		console.log(eval(input[i + 1]))
		console.log("")
	}
}

main()
Copy The Code & Try With Live Editor
Advertisements

Demonstration


Previous
#3055 Beecrowd Online Judge Solution 3055 Nota Esquecida Solution in C, C++, Java, Js and Python
Next
#3068 Beecrowd Online Judge Solution 3068 Meteoros Solution in C, C++, Java, Js and Python