• 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

Object Storage Arubacloud
0 głosów
325 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,010 p.)
Zbędny średnik na końcu linijki #18?
komentarz 8 września 2019 przez tkz Nałogowiec (42,000 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,000 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 (40,950 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 (56,980 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ź 480 wizyt
0 głosów
1 odpowiedź 619 wizyt
pytanie zadane 27 września 2017 w C i C++ przez adam456 Nowicjusz (120 p.)
0 głosów
1 odpowiedź 3,873 wizyt
pytanie zadane 13 czerwca 2016 w C i C++ przez Hellgrush Nowicjusz (230 p.)

92,536 zapytań

141,377 odpowiedzi

319,456 komentarzy

61,922 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...