Pomoże mi ktoś z tym kodem ?
http://ideone.com/BOaLyn10
Strona nie chce mi zaakceptować zadania odkryłem że liczba ciastek w pudełku (m) powinna być w long long wtedy nie wyrzuca programu ale przy wielkiej ilości uczestników ale po wpisaniu ich ok 10 czasów jedzenia ciastek wywala program do pulpitu. Jestem tu nowy wiec przepraszam za śmiecenie i nieogarnięte zachowanie jestem otwarty na wszelkie wskazówki co i jak powinienem robić
Cześć, potrzebuję pomocy. Kod był wielokrotnie poprawiany, judge odrzuca każdą próbę, mimo że dla danych przykładowych wyniki wychodzą poprawne.
include
include
using namespace std;
int main()
{
float n,t; //liczba uczestnikow, liczba ciastek w pudelku, liczba testow
float m;
cout<<"Podaj liczbe testow: ";
cin>>t;
for (int j=0; j<t; j++)
{
cout<<"Podaj liczbe uczestnikow, a po spacji liczbe ciastek w pudelku: ";
cin>>n>>m;
cout<<"Podaj czas jedzenia ciasteczka dla kazdego uczestnika: ";
float ciastka[n];
float czasy[n];
float suma=0;
for (int i=0; i<n; i++)
{
cin>>czasy[i];
}
for (int i=0; i<n; i++)
{
ciastka[i]=floor(86400/czasy[i]);
suma+=ciastka[i];
}
float pudelka;
if(suma !=0)
{
pudelka=ceil(suma/m);
}
else
{
pudelka=0;
}
cout<<"Nalezy kupic "<<pudelka<<" pudelek ciastek."<<endl;
}
return 0;
}
kod programu przekazujemy poprzez link do ideone.com5
proponuje, abyś tam przeniósł kod, uruchomił (trzeba trochę poprawić), w okienko dane wejściowe (stdin) wstawił przykładowe dane z zadania i obejrzyj wynik (stdout), czy jest zgodny z oczekiwaniami aurora zadania ?
czy naprawdę uważasz, że
Podaj liczbe testow: Podaj liczbe uczestnikow, a po spacji liczbe ciastek w pudelku: Podaj czas jedzenia ciasteczka dla kazdego uczestnika: Nalezy kupic 8 pudelek ciastek.
Podaj liczbe uczestnikow, a po spacji liczbe ciastek w pudelku: Podaj czas jedzenia ciasteczka dla kazdego uczestnika: Nalezy kupic 2 pudelek ciastek.
to jest to samo co:
8
2
Mam podobny problem do kolegi wyżej z tym że prócz błędu SIGSEGV w SPOJ pokazuje mi w ideone.com że kompilator oddaje na końcu informację "inf" czy może mi ktoś powiedzieć skąd się to bierze i dlaczego sędzia odrzuca zadanie ? czy to właśnie dla tego ?
https://ideone.com/n1KNuK4
- Czy sądzisz, że: ".. N ≤ 10.000.." <==> N ≤ 10 ??
- Po jaką ... używasz w ogóle tablicy??
- Jak wyżej, ... typu float??
- Jak wyżej, zmiennych globalnych ?
Z powodu błędu w 13 linii twojego programu.
inf === infinity === wartość niewyobrażalnie duża, lub wyobrażalna, ale przekraczająca maks wartość [pojemność] użytego typu zmiennej.
:PS
Warto uważniej czytać treść zadania - powtórzyć to czytanie, przy problemach z zaliczeniem, a potem, gdy pytasz na forum, warto uważnie przeczytać i przemyśleć cały wątek/wątki na temat.
Witam wszystkich Panowie mam problem z obżartuchami takiego rodzaju, że ten int nie zaokrągla mi pudełek w górę tylko w dół dlatego przy pierwszym teście wychodzi mi 6 pudełek a nie 8. Kod masakra wiem dopiero się uczę z góry dzięki za pomoc.
include
using namespace std;
int main()
{
int ilosc_testow;
int ilosc_obzartuchow[100];
int ile_ciastek[100];
int doba=3600*24;
int j=0;
int obzartuchy[1000];
int liczba_pudelek=0;
int pudelka=0;
cin>>ilosc_testow;
for (int i=0 ;i<ilosc_testow; i++)
{
cin>>ilosc_obzartuchow[i]>>ile_ciastek[i];
while(j<ilosc_obzartuchow[i])
{
cin>>obzartuchy[i];
liczba_pudelek+=((doba/obzartuchy[i])/ile_ciastek[i]);
j++;
}
j=0;
cout<<"Ilosc paczek ciatek dla testu nr."<<i+1<<" wynosi: "<<liczba_pudelek<<endl;
}
return 0;
}
- Zaznacza się cały kod i dopiero klika w
</>
lub wkleja kod na ideone.com, a tu link do wykonanego tam testu. - SPOJ raczej nie służy do nauki [programowania] a do, swoją drogą w bardzo atrakcyjnej formie, testowania i utrwalania swoich umiejętności i porównywania z umiejętnościami innych [już coś kolwiek umiejących] programistów. Do tego [nauki] jest literatura i nauczyciele, a wybacz ja nie jestem.
- bonus [number 2]: ---> http://213.192.104.217/phpBB3-spoj-pl-backup/viewtopic.php?f=1&t=1214&sid=473a6ed0abb4ff296004debda0fd65457 , ze szczególnym uwzględnieniem pkt 10
- warto też poczytać posty w tym wątku + posty w innych wątkach dotyczących tego zadania: http://discuss.spoj.com/search?q=ob%C5%BCartuchy
- Podstawą jest treść zadania, którą trzeba czytać, czytać i jeszcze raz czytać aż do zrozumienia, a szczególnie gdy ma się z nim problemy: "Na podstawie tych danych, organizatorzy Zlotu chcą określić ile należy kupić ciastek", a dopiero potem, liczą ile to pudełek: "ciastka w sklepie sprzedawane są w pudełkach o stałej wielkości". Z twojego kodu widać, że tego niestety nie zauważyłeś/nie uwzględniłeś.
Witam! Mam problem z zadaniem Obżartuchy, kod sprawdzałem na ideone i wyniki mam dobre, ale sędzia pokazuje mi błąd wykonania (SIGSEGV). Dopiero niedawno zacząłem naukę programowanie i nie mam pojęcia czemu mi nie przyjmuje tego kodu. Proszę o pomoc.
#include <iostream>
using namespace std;
int prob;
int main()
{
cin>>prob;
for (int i=0;i<prob;i++)
{
int pudelka=0, ile_o, ciastka, czas[100], suma=0,doba=86400;
float x[100];
cin>>ile_o>>ciastka;
for(int i=0;i<ile_o;i++)
{
cin>>czas[i];
}
for(int i=0;i<ile_o;i++)
{
if (x[i]=doba%czas[i]==0)
{
x[i]=doba/czas[i];
}
else
{
x[i]=(doba/czas[i])-1;
}
suma+=x[i];
}
if (suma%ciastka==0)
{
pudelka+=suma/ciastka;
cout<<pudelka<<endl;
}
else
{
pudelka+=(suma/ciastka)+1;
cout<<pudelka<<endl;
}
}
return 0;
}
Warto najpierw nauczyć się czytać! Czytać ze zrozumieniem, więc może wróć i zacznij od tego?
W poście nad twoim umieściłem kilka bezcennych rad, przeczytaj i zastosuj się chociaż do pkt. 1 i 5. To ja osobiście, wyedytowałem i poprawiłem Ci formatowanie twojego błędnie wklejonego kodu.
Przemyśl też koniecznie pkt 5. Poniżej malutki fragmencik z treści zadania:
... W pierwszej linii znajdują się dwie liczby całkowite N i M oddzielone pojedynczą spacją (1 ≤ N ≤ 10.000, 1 ≤ M ≤ 1.000.000.000). Oznaczają one odpowiednio liczbę zaproszonych obżartuchów na Zlot oraz liczbę ciastek ....
Czy naprawdę sądzisz, że czas[100] jest na tyle rozciągliwy, aby pomieścić 10000 obżartuchów? Po kiego, tak w ogóle, potrzebne jest Ci wpychanie ich wszystkich w jedną ciasną klatkę? Czy nie możesz, spytać pierwszego, tylko o to, ile czasu je ciastko, zapamiętać [przetworzyć], wpuścić go na Zlot i przejść do następnego?
Całą resztę twojego rozwlekłego kodu, kładę na karb tego, że się dopiero lub zaczniesz uczyć czytać . Życzę powodzenia i wytrwałości.
PS
SIGSEGV wynika właśnie z powodu nierozciągliwości twojego czasu i grzebania po nie przydzielonej pamięci.
PS 2
instrukcja:
x = doba/czas - 1;
jest błędem - dzielenie całkowitoliczbowe jest zawsze ucinane[zaokrąglane do liczby całkowitej w dół] i w tym wypadku nic nie zmienia tego faktu, to, że x jest typu float. Najpierw jest tu wykonywane dzielenie całkowitoliczbowe, a dopiero potem wynik tego dzielenia, konwertowany jest na typ float. Wystarczy więc tylko samo:
x = doba/czas;
bez całej reszty sprawdzania modulo etc.
PS 3
Jeszcze lepiej po prostu:
suma += doba/czas;