tak tylko jak użyję %c zamiast %s to program się wysypuje przy wpisaniu /..
a te wyniki to sprecyzuje po wpisaniu no + 7 9 to mi wyskakuje zero ... i cokolwiek tam dam to to samo wychodzi ...
Do końca plików ? Dobra, ale potem jak wypisać wyniki ?? bo tego zupełnie nie wiem
EDIT:
Tzn jakby wyniki można było wypisywać zaraz po wyliczeniu to ok, ale tak nie można ?
Jak ja mam te wyniki wypisać ?(wiem jak napisać eof te 5 to do testów ... )
No więc najpierw wyjaśnię testy:
jeśli nie ma podanej na początku inputu liczby testów oraz w przykładzie nie jest osobno jeden test, to trzeba wczytywać liczby, znaki czy coś innego do końca pliku, czyli do EOF (End Of File). Oto program, który wczytuje stringi do końca pliku i je wypisuje:
<stdio.h>
int main(void)
{
char tab[1000];
while(scanf("%s",&tab)!=EOF)
{
printf("%s\n",tab);
}
return 0;
}
A poza tym:
cin i cout (C++) - biblioteka iostream
scanf i printf (C/C++) - biblioteka stdlib.h / cstdlib
Nie możesz w C++ używać scanf i printf, jeśli nie masz biblioteki cstdio.
Aha - dane wczytujesz pojedynczo, a po każdym "przykładzie" wypisujesz odpowiedź (więc tablica nie jest konieczna). To nie jest tak, że:
wczytujesz, wczytujesz ... wczytujesz EOF wypisujesz
wczytujesz wypisujesz, wczytujesz wypisujesz ... wczytujesz wypisujesz EOF
No i nie wiem, co to jest
return EXIT_SUCCESS;
, bo nie jestem zaawansowany w programowaniu, ale chyba mogę z czystym sumieniem powiedzieć, że to niepotrzebne w C++, a w Ansi C wystarczy
return 0;
Po co sobie wydłużać pisanie kodu?
Przeczytaj ten wątek187,a potem popraw program. Nie zapomnij usunąć kodu z forum bo jak zaczniesz poprawnie wczytywać nieokreśloną ilość danych będzie AC. A na przyszłość proponuję dopisywać się do istniejących wątków.
Nie mam pojęcia, ale podejrzewam, że tak, niedoczytałeś. Było to już tyle razy poruszane ....
o
1. Fatalne formatowanie wklejonego kodu </> - ctrl-k
2. Nie wszyscy są fanami c# więc warto napisać, że to c#, java, albo jeszcze coś inneg.
3. Gdyby zadanie polegało np na wypisaniu największego i najmniejszego wyniku lub coś podobnego to owszem. Tutaj można od razu wypisywać wyniki, zamiast je tablicować.
4. Dla "grzecznych" danych twój program jest ok
--
grzeczne:
dane [eof]
niegrzeczne:
dane
[eof]
bardzo niegrzeczne:
[empty line]
dane
[empty line]
dane
[empty line]
[eof]
Przetestuj chociaż dla umiarkowanie "niegrzecznych" danych
Przy pisaniu kodu, unikaj jak ognia metody copy/paste. Gdybyś musiał wszystko pisać z klawiatury, może natychmiast poprawiłbyś/napisał kod,w poniższy sposób:
l1 = Convert.ToInt32(liczby[1]);
l2 = Convert.ToInt32(liczby[2]);
if (znak==...)
wynik = l1 /[+-*%] l2;
...
lub
swich (znak){
case '+' : wynik = l1 + l2;
break;
....
itd
znak = liczby[0];
Nazwa tablicy jest źle dobrana, nie uważasz?
Czy nie lepiej np tak:
operator = dane[0];
lub
op = linia[0]; //bufor[0];
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;
}