141 / 192
Apr 2019

Przemyśl co ma być na wyjściu programu (jest to w przykładzie) a co jest u Ciebie. Należy to potraktować DOSŁOWNIE

Innymi słowy wrzuć kod do Ideone, wrzuć mu przykładowe dane wejściowe do standardowego wejścia i uruchom program. Wyjdzie tak samo jak powinno?

24 days later

Witam,
Ktoś pomoże? Na ideone wychodzi tak jak jest w przykładzie. a niestety sędzia wywala “Błędna odpowiedź” https://ideone.com/PhEbBL9
Dodam tylko ze zmienialem zmienna, która odpowiada za czas jedzenia jednego ciastka zeby nie byla powyzej liczby sekun całego dnia ale nic.

Funkcję sum wywołuj tylko jeden raz i usuń parametr c, który jest zbędny. W treści zadania nie ma nic o sprawdzaniu poprawności wejścia. Usuń wszystkie takie konstrukcje:

 if ((1 <= quantityMonsters) && (quantityCookiesInBox <= 10000) && (1 <= quantityCookiesInBox) && (quantityCookiesInBox <= 1000000000))

Tyle powinno wystarczyć do AC. Możesz też zrobić to zadanie bez tablic i typów zmiennoprzecinkowych :wink:

BTW. W C++ raczej nie powinno się używać funkcji exit. Możesz zakończyć działanie funkcji main używając return.

Bardzo dziękuje, zadziałało. Wydawało mi się, że jeśli jest napisane jaki przedział liczbowy jest dla danej zmiennej to siłą rzeczy trzeba zrobić sprawdzanie poprawności.
Jeśli chodzi o to że mógłbym to zdanie zrobić bez tablic to, tak wiem, Tzn. później wpadłem na taki pomysł, ale pozostałem przy tablicy, bo chciałem trochę poćwiczyć.
Co do returna, tak. zmieniłem, ponieważ gdy za pierwszym razem wkleiłem kod z exitem to wyświetlił się komunikat o braku kompilacji. Zapomniałem o tym wspomnieć.
Jeszcze raz dziękuje za pomoc.

Przedział liczbowy to informacja względem której możesz wybrać typ zmiennej, lub algorytm itp. Istnieją zadania w których masz sprawdzać poprawność danych, ale wtedy jest to dokładnie opisane.
Błąd kompilacji mógł wystąpić, ponieważ nie dołączyłeś nagłówka < cstdlib > (tam znajduje się std::exit).

Ok, będę pamiętał :slight_smile:
Hmmm… dziwne, w VS nie mialem cstdlib a i tak exit dział.
Nie mniej, jeszcze raz BARDZO dziękuje za pomoc!

1 month later

Popatrzyłem na Twój kod i się przeraziłem. 83 linie kodu, gdy można to zrobić w mniej niż 30. Nie zrozum mnie źle,nie krytykuję go. Tworzenie klas ma tutaj pewnie jakieś walory edukacyjne, ale bardzo wydłuża kod i obniża, moim zdaniem, czytelność programu. Sorry, nie byłem w stanie zmusić się, by go przeczytać. Ale możliwe, że znajdziesz innych chętnych.

też popatrzyłem, potem przeczytałem, i jestem pełen podziwu, jak bardzo można skomplikować program

błąd jest dość prosty, proponuję, abyś wrócił do treści zadania i przeczytał je bardzo uważnie

3 months later

Hej, męczę się z obżartuchami już trochę i nie umiem rozkminić, dlaczego moja odpowiedź jest niepoprawna, ktoś z Was będzie tak dobry coś mi zasugerować?

Dziękuję, i proszę o wybaczenie, jeśli coś przeoczyłem tu na forum.

2 rzeczy mi sie rzuciły w oczy:

  1. Pomyśl o tym jak liczysz opakowania i czy na pewno dobrze to robisz.
  2. Przy wypisywaniu przydałoby się coś jeszcze
    Po tych zmianach mam AC z twoim kodem. Powodzenia :slight_smile:

Mam problem po dla podanych zestawow dziala a zielnej rameczki nie dostaje ;). PS. wulgaryzmy wiem zaraz przestawie wyglada to tak

#include

using namespace std;

long long int test_nr,ilosc_obazar,ciacha_wpudle,time_one_cookie;
long long int max_seconds=86400,all_cookies=0;

// liczy ile dany obzartuch opierdolil ciach
int opierdolone_ciacha(int seconds)
{
return max_seconds/seconds;
}

// How many boxes we need
int all_boxes(int cookies, int cookies_one_box)
{
if (cookies%cookies_one_box==0)
{
return cookies/cookies_one_box;
}
else
{
return (cookies/cookies_one_box)+1;
}
}

int main()
{
cin>>test_nr;

// main loop
for (int i = 0;i< test_nr; i++)
{
    cin>>ilosc_obazar>>ciacha_wpudle;
    for (int i=0; i<ilosc_obazar; i++)
    {
        // wczytac czas jedzenia 1 ciacha dla kazdego obzartucha
        cin>>time_one_cookie;
        // policzyc ile opierdoli
        all_cookies+=opierdolone_ciacha(time_one_cookie);

    }
    //cout<<"Lacznie ciach: "<<all_cookies<<endl;
    cout<<all_boxes(all_cookies,ciacha_wpudle);
    all_cookies=0;
}



return 0;

}

Kod jest zbyt wulgarnie wstawiony, żeby w ogóle na niego patrzeć.

#include

using namespace std;

int main()
{

int ilosc_testow,ilosc_obazar,ciacha_wpudle,time_one_cookie;
int max_seconds=86400,all_cookies=0;

cin>>ilosc_testow;

for (int i = 0;i< ilosc_testow; i++)
{
    cin>>ilosc_obazar>>ciacha_wpudle;
    for (int i=0; i<ilosc_obazar; i++)
    {

        cin>>time_one_cookie;
        all_cookies+=max_seconds/time_one_cookie;

    }

    if (all_cookies%ciacha_wpudle==0)
    {
        cout<<all_cookies/ciacha_wpudle;
    }
    else
    {
        cout<<(all_cookies/ciacha_wpudle)+1;
    }


    all_cookies=0;
}





return 0;

}

Proszę Bardzo z góry dzięki za odpowiedź. od razu jedna pytanie czy obojętne jest dla sędziego czy użyję dodatkowych funkcji czy też nie ?

Liczy się tylko poprawna odpowiedź (i sensowny czas wykonywania). Nadal wstawiłeś tak samo kod.

1 month later

witam musisz dodać endl; przy podawaniu wyników oraz przenieść zmienne pod fx for wyznaczającą ilość testów ( oczywiście oprócz zmiennej ilość testów.

10 days later

Ideone posiada ten sam “silnik” co spoj. NZEC występuje gdy program zwraca coś innego niż zero. Coś innego niż zero oznacza jakiś błąd programu i rzeczywiście widać to ideone. Nie znam się aż tak na pythone (coś z biblioteka cmath trzeba dopisać) Można zrobić to zadanie na samych intach.