180 / 192
Apr 2020

Gdy masz dzielenie dwóch liczb całkowitych dodatnich to wynik zawsze jest zaokrąglany w dół. By mieć “zwykłe” zaokrąglanie musisz to robić dla liczb zmiennoprzecinkowych np. dla typu double. Przykład:
int a, b;

a/b;
będzie zaokrąglony w dół.
Jeśli a skonwertujesz do typu double to wynik też będzie double i możesz go zaokrąglać w górę przy użyciu funkcji “ceil”, oczywiście musisz pamiętać o dołączeniu biblioteki cmath
Możesz też dokonać niejawnej konwersji np. w taki sposób:
(0.0+a)/b;
Tu też wynik jest już typu double, który możesz odpowiednio zaokrąglić.
P.S.
Dlaczego w Ideone kodu wykonywałeś w Javie? Przecież kod jest napisany w C++

Dziekuje za pomoc. A co do tej javy w ideone to poprostu przeoczenie.

Czy ktos wie dlaczego pierwszy wynik jest dobry czyli 8 a drugi wynik jest zly czyli 3 zamiast 2?

Oto fragment tresci zadania:
uczestnikowi nie wolno napocząć ciastka jeśli wie, że nie zdąży go zjeść przed końcem doby

Witam powie mi ktos czemu to się nie zapętla ? Program działa dobrze lecz wykonuje sie tylko raz nie zapetla sie w miejscu wskazanym w kodzie

#include <iostream>

using namespace std;
int iloscwejsc,ludzie,ciastka;
int main()
{
cin>>iloscwejsc;
for(int i=0;i<iloscwejsc;i++)  ///////////// ta petla wykonuje sie tylko raz
{
    cin>>ludzie>>ciastka;
    int czas[ludzie];
    int suma=0;
    for(i=0;i<ludzie;i++)
    {
        cin>>czas[i];
        suma+=86400/czas[i];
    }
    if(suma%ciastka>0)
    cout<<(suma/ciastka)+1<<endl;
    else
        cout<<suma/ciastka<<endl;


}

return 0;
}

W obydwu pętlach masz taką samą nazwę licznika “i”, daj w drugiej pętli np. k.

Po co dajesz tablicę na zmienną czas?

  1. Jest niepotrzebna.
  2. Jest niepoprawnie deklarowana. Dla tablicy statycznej jej rozmiar musi być znany już w momencie wykonania, tak można robić z tablicą dynamiczną

Ewentualnie, w drugiej, wewnętrznej pętli, zabrakło deklaracji int.
W takich przypadkach, zamiast pętli for, można użyć pętli while:

 while (iloscwejsc--) {

Cześć wszystkim. Mógłby ktoś zerknąć co może być nie tak z moim kodem? Sam nie potrafię znaleźć błędu.
To mój pierwszy post więc przepraszam z góry jeśli coś źle wstawię. Z góry dzięki.

#include

using namespace std;
int how_many=0,person=0;
long cookies=0;
int pack=0;
int time=86400;
int main()
{
cin>>how_many;
for(int i=1;i<=how_many;i++)
{
pack=0;
cin>>person>>cookies;
int t[person];
int p[person];
int c[person];
for(int i=0;i<person;i++)
{
cin>>t[person];
c[person]=time/t[person];
p[person]=c[person]/cookies;
pack+=p[person];
}
if(c[person]%cookies==0)
{
cout<<pack<< endl;
}
else if(c[person]%cookies>0)
{
pack+=1;
cout<<pack<<endl;
}

}


return 0;

}

1 month later

Witam, również mam problem z kodem do tego zadania mimo iż u siebie uruchamiam normalnie program i wyskakują mi poprawne odpowiedzi tak jak na https://ideone.com/u4j8Yc3 mimo to kod nie przechodzi przez SPOJA prosiłbym o pomoc z góry dziękuje .

  1. Obżartuchy nie potrzebuja osobnych pudelek dla siebie, powiedzmy ze przed zjedeniem przekladaja na swoj talerzyk.
  2. Używana wartość 0.01 nie wynika z tresci zadania. Czy nie jest ona po to zeby podrasowac wynik ?
  3. Test pokazujacy bledy.
    wejscie:
    3
    1 1
    863
    1 1
    864
    1 1
    865
    prawidlowe wyjście:
    100
    100
    99

dobra zadanko zrobione, dzięki za wszystkie 3 uwagi sprowadzały się one tak naprawdę do wcześniejszej odpowiedzi której komuś tam udzieliłeś “Oto fragment tresci zadania:
uczestnikowi nie wolno napocząć ciastka jeśli wie, że nie zdąży go zjeść przed końcem doby”
(nie doczytałem zadania, dzięki wielkie za pomoc ! )