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
Dzięki za 6 wskazówek, kod jest dużo prostszy
W zadaniu w specyfikacji wejścia jest jeszcze taka wypowiedź: "[...] Liczba testów nie przekracza 100, wynik zawiera się w typie int32". Z tego powodu zawęziłam for do 100 operacji. Nawet jeśli poprawnie zinterpretowałam to zdanie, no to wiem...kod nie jest uniwersalny, więc zmieniam na while(cin >> wybor >> a >> b)
Hej! Mam problem z zadaniem kalkulator...
Sędzia nie chce przyjąć mojego kodu, pomimo, że dane wyjściowe są
poprawne. Móglby ktoś powiedzieć mi co jest nie tak w tym kodzie?
Twój kod nie działa dla przykładowego wejścia: https://ideone.com/qO7M4s67. Zwróć uwagę, że w zadaniu nie jest podana liczba danych wejściowych - musisz wczytać ich nieznaną ilość. Odszukaj na tym albo starym (raczej starym) forum poradnik dotyczący wczytywania nieokreślonej liczby testów a po AC usuń kod.
Cześć. Mam problem z tym zadaniem. Jakich bym nie dał danych wejściowych wynik wychodzi mi dobry a Spoj nie zalicza.
Masz problem? - najpierw czytaj potem pytaj - tu już padała kilkakrotnie podpowiedź.
PS
A jednak. Takich nie dałeś:
https://ideone.com/D8ztq171
cześć wszystkim, próbowałem już zmienić wszystko, co było opisane w powyższych postach, ale wciąż wyskakuje mi błąd mimo, że przeprowadzam najróżniejsze testy i wszystko działa... Ktoś pomoże?
Trochę odkopuje ale nie działa mi kod: według mnie wszystko oki
include
using namespace std;
int main()
{
int32_t a,b;
char znak;
int ile;
int i=0;
cin>>ile;
while(i<ile)
{
cin>>znak>>a>>b;
i++;
switch (znak)
{
case '+':
cout<<a+b<<endl;
break;
case '-':
cout<<a-b<<endl;
break;
case '*':
cout<<a*b<<endl;
break;
case '/':
cout<<a/b<<endl;
break;
case '%':
cout<<a%b<<endl;
break;
}
}
}