4 / 7
Mar 2024

Czy ktoś może mi wytłumaczyć dlaczego przy przesyłaniu odpowiedzi do zadania Obżartuchy dostaję błąd wykonania SIGFPE?
Przez test przeszedł następujący kod:

#include <iostream>

using namespace std;

int numberofguests, cookiesinbox, numberoftests, numberofboxes, howmanycookiesforallguests;

float boxfloat;

int main()
{
    cin >> numberoftests;

    for (int i = 1; i <= numberoftests; i++)
    {
        howmanycookiesforallguests = 0;
        cin >> numberofguests >> cookiesinbox;
        int* guesteatingspeed = new int[numberofguests];
        for (int i = 0; i <= numberofguests; i++)
        {
            cin >> guesteatingspeed[i];
            howmanycookiesforallguests += 86400 / guesteatingspeed[i];
        }

        if (howmanycookiesforallguests <= cookiesinbox)
            numberofboxes = 1;

        else
        {
            boxfloat = howmanycookiesforallguests / cookiesinbox;

            if (howmanycookiesforallguests % cookiesinbox != 0)
                numberofboxes = (int)boxfloat + 1;

            else
                numberofboxes = boxfloat;
        }

        cout << numberofboxes << endl;
    }
    return 0;
}

Jeżeli ktoś nie rozumie nazw zmiennych to podaję ich znaczenia:
numberofguests - liczba zaproszonych obżartuchów
cookiesinbox - liczba ciastek w pudełku podana przez użytkownika
numberoftests - liczba zestawów testowych podana przez użytkownika
numberofboxes - liczba pudełek które należy kupić, wyświetla się w wyjściu
howmanycookiesforallguests - liczba ciastek, która będzie potrzebna w sumie dla obżartuchów
boxfloat - zmienna float, która przechowuje wynik dzielenia liczby potrzebnych ciastek przez liczbę ciastek w jednym pudełku

Jeżeli jest ktoś w stanie naprawić ten błąd i wskazać błędny kod to będę wdzięczny za odpowiedź.

  • created

    Mar '24
  • last reply

    Mar '24
  • 6

    replies

  • 271

    views

  • 2

    users

  • 2

    likes

  • 1

    link

… to chciałbyś, aby Ci taki ktoś pomagał!?

Zakładam, że używasz “techniki” copy-paste. Ta “technika” oszczędza minimalnie czas pisania kodu, ale często, i tak wygląda mi u Ciebie, przysparza bólu głowy i wielogodzinnego szukania błędu/ów. Więc już wiesz gdzie szukać błędu?

PS
Poszukaj wątku “jeżeli zaczynasz…” i koniecznie przeczytaj go!

Odwołując się do tego wątku “jeśli zaczynasz”, to nie znalazłem żadnego wątku który rozwiązuje mój problem. Dlaczego nie może ktoś, kto umie to naprawić po prostu odpowiedzieć na moje pytanie? Na tym chyba polega to forum. I nie, nie używam techiniki copy paste. Napisałem ten kod normalnie i piszę na tym forum tylko dlatego, że mam błąd w kodzie, którego szukałem i nie znalazłem oprócz tego że zmieniłem znak z ‘<=’ na ‘<’ w drugiej pętli, a to nie wpłynęło na wynik sędziego online. Jeżeli wiesz gdzie jest błąd to byłbym wdzięczny jakbyś go wskazał, a nie zostawiasz mnie tylko z pytaniem “już wiesz gdzie szukać błędu?”. Nie znalazłem błędu, który powoduje błąd wykonania i nie wiem co mam źle. Nie mogę robić postępów w nauce, jeżeli zatrzymuję się w zadaniach jak te przez to że nie wiem jaki mam błąd. Więc jeszcze raz, jeżeli mógłbyś wskazać błąd to będę bardzo wdzięczny.

Usunąłem znak równości w linii 19 i teraz jest że błędna odpowiedź

Typ float? Dzielenie masz całkowite.
A co, jeśli żaden obżartuch nie zje całego ciastka? Wtedy też organizatorzy powinni kupić 1 pudełko?