1 / 3
Nov 2021

Nie wiem czemu ale program mi nie przechodzi, dane wyjścia są git dla podanych przykładów w treści zadania. Nie mogę wymyślić zestawu danych dzięki któremu mógłbym wykryć co jest źle. Jakieś sugestie?

Kod:

#include <iostream>
#include <string>
#include <cmath>

using namespace std;

int main()
{
    int ile,obzar;
    float ciastka = 0, pudelka;
    cin >>ile;
    for(int i = 0;i < ile;i++)
    {
        cin >> obzar >> pudelka;
        float czasy[obzar], wynik = 0;
        for(int i = 0;i < obzar;i++)
        {
            cin >> czasy[i];
            ciastka += 86400 / czasy[i];
            ciastka = floor(ciastka);
        }
        wynik = ceil(ciastka/pudelka);
        cout << wynik << endl;
        ciastka = 0;
    }
    return 0;
}
  • created

    Nov '21
  • last reply

    Nov '21
  • 2

    replies

  • 406

    views

  • 2

    users

  • 1

    link

Trudno byłoby stworzyć zestaw danych ze względu na ilość linii potrzebnych.
Link do https://ideone.com/esCWLz3

W linku i poniżej programik pokazujacy coś o precyzji zmiennej float.

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
    int ile,obzar;
    float ciastka = 0, pudelka, wynik;
    pudelka=864000000;
    ciastka=863999999;
    wynik = ceil(ciastka/pudelka);
    cout << wynik << endl;
    ciastka=864000000;
    wynik = ceil(ciastka/pudelka);
    cout << wynik << endl;
    ciastka=864000001;
    wynik = ceil(ciastka/pudelka);
    cout << wynik << endl;
    ciastka=864000002;
    wynik = ceil(ciastka/pudelka);
    cout << wynik << endl;
    return 0;
}

No tak program spadał z rowerka ponieważ float ma max 7 cyfr a w treści zadania pisze że przyjmuje liczby do 1mld(10 zer) wystarczyło zmienić float na double (14 cyfr) i od razu weszło dzięki.