Więc popatrz jeszcze raz na swój poprawny kod umieszczony tutaj na forum. [zabrakło nowej linii].
Niektóre zmienne w pętli należy zerować - np sume ciastek. Ale wystarczyłoby program przetestować nawet takimi testami jak w zadaniu [np na ideone] i taki błąd natychmiast byś wyłapał. Jeżeli jednak wolisz, aby to spoj testował poprawność, to bedzie właśnie taki efekt - multum WA, sigsegv itd. A jak ich nazwałeś grubasów może być: (1 ≤ N ≤ 10.000 więc w pudełko stu elementowe ich żadną siłą nie upchniesz - stąd sigsegv.
PS
A miałem zaoszczędzić sobie pisania, ale widać nie dane mi było.
Jeżeli na forum chcesz pokazaćswój kod, to: wklejasz go, zaznaczasz cały kod [myszą] i klikasz w taki znaczek "</>" w menu. Jeżeli dostałeś ac, to raczej powinieneś usunąć swój kod - edytując swój post. Zmienne powinno się zerować na początku, przed użyciem, a nie na końcu pętli.
Czyli:
int suma_ciastek = 0;
No i jeżeli wysłałeś do sprawdzenia na spoja, to po co wysyłasz też tutaj? Przecież spoj Ci da najlepszą i natychmiastową odpowiedź.
Witam Serdecznie, podczas testowania programu wyskakuję mi błędna odpowiedź próbowałem sprawdzeń ręcznych ktoś ma jakąś sugestię ? Czy to może być kwestia ceil ? Poniżej znajduję się kod.
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
unsigned int ile;
cin >> ile;
for(int i=1;i<=ile;i++)
{
unsigned short ludzie=0;
unsigned long long ciastka=0;
float wynik=0;
cin >> ludzie >> ciastka;
for (int i=1;i<=ludzie;i++)
{
float sek,wyn;
cin >> sek;
wyn=84600/sek;
wynik+=wyn;
}
cout << ceil(wynik/ciastka) << endl;
}
}
co w tym kodzie może być nie tak?
using namespace std;
int main()
{
int doba = 86400;
int chowtime;
int N;
int test;
cin>>test;
int M;
int piece;
int pieces=0;
int boxes=0;
for(int i=0;i<test;i++)
{ boxes=0;
cin>>N>>M;
while(0<N)
{
cin>>chowtime;
piece=doba/chowtime;
pieces+=piece;
N--;}
while(pieces>0)
{
pieces=pieces-M;
boxes++;}
cout<<boxes;
}
return 0;}
Na pewno "nie tak" jest on wstawiony
W związku z tym nie mogę go uruchomić. Czytam więc pobieżnie i hm... upiekło Ci się Widzę dwa błędy i powinno być AC.
1) Co wyświetla Twój kod dla danych testowych? Bo na pewno nie osiem w pierwszej linii i dwa w następnej linii. Wstaw endl w odpowiednie miejsce.
2) Słusznie zerujesz boxes w każdym przypadku testowym. A co z pozostałymi zmiennymi? Czy którejś z nich też nie trzeba wyzerować?
Witam. Nie jestem wstanie pozytywnie przejść sprawdzania kodu poprzez sędziego. Na stronie Ideone wyświetla poprawne wartości. Proszę o pomoc i dziękuję.
#include <iostream>
using namespace std;
int testy,uczestnicy,ciastka,czas1,czas2,czas3,doba=86400,zjedzone;
int main()
{
int suma;
cin>>testy;
for(int i=1;i<=testy;i++)
{
cin>>uczestnicy>>ciastka;
if(uczestnicy==3)
{
cin>>czas1>>czas2>>czas3;
zjedzone=((doba/czas1)+(doba/czas2)+(doba/czas3));
suma=zjedzone/ciastka;
if(zjedzone%ciastka!=0)
{
suma++;
cout<<suma<<endl;
}
else cout<<suma<<endl;
}
else
{
cin>>czas1>>czas2;
zjedzone=((doba/czas1)+(doba/czas2));
suma=zjedzone/ciastka;
if(zjedzone%ciastka!=0)
{
suma++;
cout<<suma<<endl;
}
else cout<<suma<<endl;
}
}
return 0;
}
Twój program działa poprawnie tylko jeśli jest 2 lub 3 obżartuchów, a może ich być od 1 do 10000. Tak więc zamiast if(uczestnicy==3)
zastosuj coś co zadziała niezależnie od tego ilu ich będzie .
Co do funkcji zaokrąglających, to nie ma już problemu z prawidłowo użytym ceil() o ile o niego ci chodzi.
Witam, może ktoś określić co jest nie tak z moim kodem? Po zgłoszeniu go wyrzuca mi 'Segmentation fault'. http://ideone.com/r8XLtH16 W codeblocksie i na cpp.sh działa prawidłowo. Nie wydaje mi się, żebym wychodził poza tablice ani nic takiego. Nie bardzo rozumiem co powoduje ten błąd, dopiero zaczynam swoją przygodę z programowaniem.