Wątek przeniesiony 2014-02-27 16:22 z Kosz przez Shalom.

Dodawanie liczb, prosty kalkulator, spoj 997

0

witam. rozwiązuję zadania ze spoja:

Na wyjściu programu ma się pojawić ciąg liczb będących rezultatem wykonania pojawiających się na wejściu poleceń. Poszczególne liczby należy rozdzielić znakami nowej linii. Uwaga! Można założyć, że dane wejściowe nie zawierają polecenia dzielenia przez 0.

Przykład

Wejście:

  • 7 9
  • 0 4
  • 5 6
    / 8 3
    % 5 2

Wyjście:

16
-4
30
2
1

napisalem taki progamik, aczkolwiek liczy mi tylko dobrze pierwsze wpisane dzialanie. może mnie ktoś uświadomić gdzie mam błąd? dziękuję

 
#include <cstdio>

using namespace std;

int main() 
{
    int t = 100;
    int x, y;
    char ch;
    
    while(t--) 
    {
       int suma = 0;
       scanf("%c %d %d", &ch, &x, &y);
       
       switch (ch) 
       {
                case '+':
                    suma = x + y;;
                    break;
                case '-':
                    suma = x - y;;
                    break;
                case '*':
                    suma = x * y;;
                    break;
                case '/':
                    suma = x / y;;
                    break;
                case '%':
                    suma = x % y;;
                    break;
                        
                default:
                    break;
       }
       
       printf("%d\n", suma);
    }

    return 0;
}
0
  1. Na pewno tam jest tylko 100 testów zadanych odgórnie? Wątpię.
  2. Problem leży u ciebie w znaku nowej linii. Po wczytaniu pierwszego symbolu i dwóch liczb w buforze zostaje znak nowej linii który wczytujesz za pomocą %c (zamiast wczytać symbol działania który jest dalej).
0

Może spróbuj tak:

scanf("\n%c %d %d", &ch, &x, &y);

1 użytkowników online, w tym zalogowanych: 0, gości: 1