2 / 3
Apr 2020

Witam, już 3-cią godzinę borykam się z zadaniem kalkulator(łatwe). Potrzebuję zrobić to w języku C.
https://pl.spoj.com/problems/CALC/2

Takie wyniki powinienem otrzymać:

Przykład
Wejście:

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

Wyjście:
16
-4
30
2
1

Program, który napisałem zwraca poprawne wartości, mimo to sędzia nie zalicza mojego programu i wyświetla “Błędna Odpowiedź”.

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

int main() {

char wybor;
while(scanf("%c",&wybor))
{
int a, b;
scanf("%d %d",&a,&b);

switch(wybor)
{
  case '+':printf("%d\n",a+b);
  break;
  case '-':printf("%d\n",a-b);
  break;
  case '*':printf("%d\n",a*b);
  break;
  case '/':printf("%d\n",a/b);
  break;
  case '%':printf("%d\n",a%b);
  break;
  default:exit(0);
}
fflush(stdin);

}

return 0;
}

Co powinienem zmodyfikować, żeby sędzia uznał ten program?

  • created

    Apr '20
  • last reply

    Apr '20
  • 2

    replies

  • 899

    views

  • 3

    users

  • 4

    links

Pozwolę sobie uzupełnić podpowiedź @korkirw’a

To jest kwestia testowania. Czy więc nie można testować na konsoli? Oczywiście, że można, ale trzeba umieć jeszcze interpretować poprawnie, to co pokazuje konsola, no i oczywiście wiedzieć jaką kombinacją klawiszy zasymulować koniec pliku [EOF]. Przypomnę dla porządku, że nie są to kombinacje <CTRL C> ani <CTRL ALT DEL> :wink: Jeżeli więc nie wiesz, nie umiesz testować u siebie, skorzystaj z ideone, wklejając tam koniecznie test, a nie tylko sam kod.

Dodatkowo, w twoim wykonaniu default : jest najgorszą rzeczą jaką mogłeś wymyśleć - “ciche”, po angielsku, opuszczenie programu. Już dużo lepiej byłoby w twoim wypadku całkiem zrezygnować z tej etykiety.

Nie trzeba używać debugera, wystarczy zwykła instrukcja drukująca. Popatrz sam i wyciągnij wnioski: https://ideone.com/oerpzy3

No i jak zrobiłeś już to zadanie w C++, to próba zrobienia go również w C jest krokiem do tyłu. Co innego, gdybyś próbował je zrobić dodatkowo np w Haskell’u.