W odpowiedzi na zestaw z zadania twój program daje 16-43021, przydało by się wyświelać odpowiedzi w osobnych liniach jak to w przykładzie jest. Jak już ci zaliczy nie zapomnij usunąć kodów, a zaliczy jak dodasz ten podział.
ps żeby uniknąć takich błędów w przyszłości, zmień sposób testowania np korzystaj z ideone.com. Tam możesz od razu wkleić całe wejście, więc taki błąd będzie od razu widoczny w wyjściu.
Jak widać w tym fragmencie wczytujesz 2x, usuń 2 cin-a i ci zaliczy. Swoją drogą ta else return 0;
linia jest zbędna, przy tej konstrukcji while "będzie wiedział" kiedy przestać. W przypadku gdybyś testował wczytując z palca (nie polecam) to kończysz przez ctrl + d pod Linuksem lub też ctrl + z pod Windows.
Hej, mam pytanie z innej beczki....
Chodzi mi optymalizację kodu kalkulatora (piszę w C++). Rozwiązałam zadanie w ten sposób: http://wklej.to/JPnq129 , wyniki są poprawne ale niestety spoj nie chce uznać rozwiązania, bo przekracza limit czasu.
Czy ktoś ma pomysł/radę jak mądrze zoptymalizować mój kod?
Nie wiem czy to będzie wystarczająco mądrze? Ja w każdym razie [w tym przypadkowym razie] zoptymalizowałbym w ten sposób, że znacznie, ale to znacznie skróciłbym czas na oczekiwanie danych, których już więcej nie ma i już nie będzie - skończył się wraz z końcem plik z danymi [eof].
Jak?
Np tak:
while (cin >> wybor) { // jeżeli udało się jeszcze coś wczytać to idę do pętli, jeżeli już nic nie ma to nie [wchodzę]
zamiast:
for ( ; ; ) // czekanie w nieskończoność w pętli, aż do tle [przekroczenia limitu czasu]
Na wejście programu podana zostanie pewna nieokreślona liczba zestawów danych.
A więc nie sto.
W twoim programie zmienłbym:
1. nazwy x, y na a, b
2. wyrzucił drukowanie wyniku poza pętlę switch
3. w case ...: wynik = a + b; itd
4 lub nawet a += b; //a -= b itd. a jest zarówno daną do obliczeń jak i wynikiem
5 wczytywać [nieokreśloną liczbę danych] można też tak: while (cin >> wybor >> a >> b){
....
PS
6. gdy zrezygnujesz z getchar() blioteka stdio jest zbędna