Witam, prośba o znalezienie bledu
include
using namespace std;
int a,b,n;
char wybor;
int main()
{
cin>>n;
for (int i=1; i<=n; i++)
{
cin>>wybor>>a>>b;
switch(wybor)
{
case '+': {cout< case '-': {cout< case '': {cout<b;}break;
case '/': if(b==0); else {cout< case '%': {cout< }
}
return 0;
}
W tym zadaniu nie ma podanej liczby zestawów, jak wczytywać w takim przypadku poczytaj tutaj108 A kod umieszczaj w znacznikach dostępnych pod ctrl +k, będzie sformatowany
Oprócz rzucania okiem warto też testować, np chociażby na ideone wkleić test: https://ideone.com/LyDEsM56 i już na drugi rzut oka widać, że wygląda ok, ale tak nie jest [na wyjściu brak -4].
Powodem jest brak jednego małego [dwóch] znaczków: \n
Warunek mógłby wyglądać np tak:
while (scanf ("%c %d %d\n", &wybor, &a, &b) != EOF)
Może ktoś powiedzieć gdzie mam błąd:
include
include
using namespace std;
int main()
{
char znak;
int a=0, b=0, i=1;
while(i)
{
cin >> znak;
cin >> a;
cin >> b;
switch(znak)
{
case '+':
cout << a+b;
break;
case '-':
cout << a-b;
break;
case '*':
cout << a*+b;
break;
case '/':
cout << a/b;
break;
case '%':
cout << a%b;
break;
default: exit(0);
}
cout << endl;
}
return 0;
}
Witam wszystkich, to mój pierwszy post na forum, poprawcie mnie jak piszę w złym miejscu
Otóż mimo, że mój kod zdaje się działać poprawnie, SPOJ wyrzuca mi błąd o przekroczeniu limitu czasu. Jestem bardzo początkujący i nie mam pomysłu na optymalizację. Czy ktoś byłby w stanie mi pokazać, co mógłbym zrobić lepiej?Kod pod spodem, ponieważ nie wiem gdzie powinno się go wkleić
include
using namespace std;
int a,b;
char znak;
int main()
{
while(true)
{
cin>>znak>>a>>b;
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;
}
}
return 0;
}
Właśnie z tego co sprawdzałem cin i scanf działa tak samo.
Ogólnie program wykonuje prawidłowe obliczenia, ale problem polega na tym, że za każdym razem (nie liczać pierwszego testu) gdy wypisuje wynik, wypisuje też wynik poprzedniego działania jak zresztą widac na ideone.
EDIT: Już wiem, scanf odczytuje potwierdzenie (klikniecie ENTER) jako znak \n przez co switch wyłapuje \n jako polecenie dla niego. Kod poprawilem i działa prawidlowo, ale przekracza limit czasu. Tylko jak go zoptymalizować na prostszy to już nie mam pojęcia. Chyba, że na if’ach będzie szybciej