• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

SPOJ Kalkulator - CALC problem z zadaniem

0 głosów
663 wizyt
pytanie zadane 8 września 2019 w C i C++ przez amelia.cpp Obywatel (1,860 p.)

Cześć robię zadanie na SPOJ, a mianowicie : https://pl.spoj.com/problems/CALC/

Sędzia nie przepuszcza mojego kodu, chociaż w VS działa bez problemu:( co jest źle i co można poprawić? Proszę o pomoc

#include <iostream>
#pragma warning ( disable : 6006 )

using namespace std;

int main()
{
	int t = 100;
	while (t != 0)
	{
		char znak;
		int liczba1, liczba2;
		cin >> znak >> liczba1 >> liczba2;
		switch (znak)
		{
		case '+': {int32_t wynik = liczba1 + liczba2; cout << wynik << endl;  break; }
		case '-': {int32_t wynik = liczba1 - liczba2; cout << wynik << endl;  break; }
		case '*': {int32_t wynik = liczba1 * liczba2; cout << wynik << endl;  break; };
		case '/': {int32_t wynik = liczba1 / liczba2; cout << wynik << endl;  break; }
		case '%': {int32_t wynik = liczba1 % liczba2; cout << wynik << endl;  break; }
		}
		t--;
	}

}

 

komentarz 8 września 2019 przez Velta Maniak (52,910 p.)
Zbędny średnik na końcu linijki #18?
komentarz 8 września 2019 przez tkz Nałogowiec (42,040 p.)

@amelia.cpp, Na wejście programu podana zostanie pewna nieokreślona liczba zestawów danych.

Nie 100, tylko nieokreślona. Wczytaj gdzieś to "t".

komentarz 8 września 2019 przez amelia.cpp Obywatel (1,860 p.)

@Velta, Niestety, to nic nie zmienia :(

komentarz 8 września 2019 przez amelia.cpp Obywatel (1,860 p.)

 Liczba testów nie przekracza 100, wynik zawiera się w typie int32.

 

komentarz 8 września 2019 przez tkz Nałogowiec (42,040 p.)
Gdzie piszą,że masz zaczynać od 100?
komentarz 8 września 2019 przez amelia.cpp Obywatel (1,860 p.)
Czy to robi różnicę? Nie bardzo rozumiem...
komentarz 8 września 2019 przez reaktywny Nałogowiec (46,230 p.)

IMO ta pętla while jest w ogóle zbędna (a być może w ogóle nie dopuszczalna !)... Wydaje mi się, że program ma obliczyć jedną operację, a SPOJ uruchomi go wiele razy sam na swoich testowych danych.

Napisz czy pomogło.

1 odpowiedź

0 głosów
odpowiedź 8 września 2019 przez Whistleroosh Maniak (57,400 p.)
wybrane 8 września 2019 przez amelia.cpp
 
Najlepsza

Jeżeli w zadaniach nie ma określonych ilości testów, to przeważnie wystarczy utworzyć pętlę while, która wygląda następująco:

while(cin >> n)

W twoim przypadku musisz wykonywać pętlę dopóki dostajesz wartości znak, liczba1 i liczba2, czyli piszesz:

while(cin >> znak >> liczba1 >> liczba2)

Poprawne rozwiązanie wygląda tak:

#include <iostream>

using namespace std;
 
int main()
{
	int liczba1, liczba2, wynik;
	char znak;
	
    while (cin >> znak >> liczba1 >> liczba2)
    {
        
        switch (znak)
        {
        case '+': 
        	wynik = liczba1+liczba2;
        	break;
        case '-': 
        	wynik = liczba1-liczba2;
        	break;
        case '*': 
    		wynik = liczba1*liczba2;
        	break;
        case '/': 
        	wynik = liczba1/liczba2;
        	break;
        case '%': 
        	wynik = liczba1%liczba2;
        	break;
        }
        
        cout << wynik << "\n";
    }
 
}

 

komentarz 8 września 2019 przez amelia.cpp Obywatel (1,860 p.)
Działa, dzięki ;)

Podobne pytania

–3 głosów
1 odpowiedź 975 wizyt
0 głosów
1 odpowiedź 742 wizyt
pytanie zadane 27 września 2017 w C i C++ przez adam456 Nowicjusz (120 p.)
0 głosów
1 odpowiedź 4,201 wizyt
pytanie zadane 13 czerwca 2016 w C i C++ przez Hellgrush Nowicjusz (230 p.)

93,743 zapytań

142,683 odpowiedzi

323,300 komentarzy

63,330 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...