121 / 192
Feb 2018

Może mi ktoś powiedzieć co jest nie tak z tym kodem? W kompilatorze działa prawidłowo dla przykładowych testów.

#include

using namespace std;
int n,m,test,pudelka,suma;

int main()
{
cin>>test;
for(int i=0; i<test; i++)
{
cin>>n>>m;
for(int i=0; i<n; i++)
{
int *t = new int [i];
cin>>t[i];
suma += 86400/t[i];
pudelka = suma/m;

   delete [] t;
}

if(suma%m > 1/m )
{
    pudelka++;
}

cout<< pudelka<<endl;
}
return 0;

}

czasami warto poczytać podręcznik do C/C++ - w twoim przypadku za szczególnym uwzględnieniem rozdziału o tablicach.

1 month later

Czy ktoś może wie czemu mi w drugim przykładzie wychodzi 3?

Suma pudełek wynosi 2.00452, więc wydaje mi się ze zaokrąglenie do 3 jest poprawne.

#include <iostream>
#include <math.h>
using namespace std;

int main()
{
    int ile_testow;
    cin >> ile_testow;

for (int i = 0; i < ile_testow; i++)
{
    float ile_obzartuchow = 0, ile_ciastek_na_pudelko = 0, czas = 0, ilosc_pudelek = 0;
    cin >> ile_obzartuchow >> ile_ciastek_na_pudelko;

    for (int i = 0; i < ile_obzartuchow; i++)
    {
        cin >> czas;
        ilosc_pudelek += ((86400 / czas) / ile_ciastek_na_pudelko);
        cout << ilosc_pudelek << endl;

    }
    cout << ceil(ilosc_pudelek) << endl;
    ilosc_pudelek = 0;
}

return 0;

}

może po prostu przelicz ten drugi przykład na kartce papieru (nie używając kalkulatora)
oczywiście przedtem jeszcze raz przeczytaj uważnie treść zadania (a w przypadku wątpliwości warto przeczytać więcej niż raz)

gdybyś przeczytał cały wątek, to wiedziałbyś, że do tej pory nikt nie zgłaszał wątpliwości co do wyników przykładu - więc problem jest o twojej stronie :slight_smile:

1 year later

Nie wypisuj nic ponad to, co jest wspomniane w zadaniu. Musisz wywalić te wszystkie komunikaty proszące o dane lub zapowiadające ich podanie, a zostawić same wczytanie danych/wypisanie wyników obliczeń.

Globalne zmienne w przeciwieństwie do lokalnych są inicjalizowane zerem - więc nie chodzi tu o wartość początkową. Suma powinna być zerowana po to, aby dodawanie odbyło się dla danych z tego konkretnego zestawu (a nie dodatkowo z jeszcze z poprzednich).

Heaya banana wszystkim (żarcik taki). Zmądrzałem od wczoraj i doszedłem do kilku nowych rzeczy. Pomogło rozpisanie wszystkiego na kartce. Teraz moim problemem jest to że się że program dodaje wyniki z podpętli.
#include

using namespace std;
int main()
{
int test, n,m,x;
int suma=0;
int doba=86400;
int tablica[10000];
int czas;
int wynik;

	cin>>test;
	for(int i=0; i<test; i++)
	{
		cin>>n>>m;
		for(int z=0; z<n; z++)
		{
			cin>>czas;
			tablica[z]=czas;				
		}
		
		for(int z=0; z<n; z++)
		{
		suma+=doba/tablica[z];
		}
 	
			
	
		if(suma%m==0){x=suma/m;}
		else{x=suma/m+1;}
		cout<<x<<endl;
	}

}

9 days later

Hej
Zrobiłem testy i wyszły, sam też nie widzę błędu w tym zadaniu. Jednak kompilator mówi mi, że jest błąd. Mógłbym wiedzieć o co chodzi? Z góry dzięki!

#include
#include

using namespace std;

int n,a[1000000],b; // zestaw testowy
int zaproszeni;
int pudelko, czas[1000000];
float c,lpud;

int main()
{
cout << "Podaj liczbê zestawów testowych: " << endl;
cin >> n;
for (int i = 0; i < n; i++)
{

cout << "Podaj liczbê zaproszonych ob¿artuchów: " << endl;
cin >> zaproszeni;
cout << "Podaj liczbê ciastek w pude³ku: " << endl;
cin >> pudelko;


for (int i=1; i<=zaproszeni; i++)
{
    cout << "Podaj czas jedzenia " << i << "ego ob¿artucha" << endl;
    cin >> czas[i-1];
}
for (int i=1; i<=zaproszeni; i++)
{
    cout << "Czas jedzenia " << i << "ego ob¿artucha to: " << czas[i-1] << endl;

}
 for (int i=1; i<=zaproszeni; i++)
{
    a[i-1]=86400/czas[i-1];
    cout << "Liczba ciastek " << i << "ego ob¿artucha to: " << a[i-1] << endl;
 b=a[i-1]/pudelko;
 c=c+a[i-1];
}

lpud = (c/pudelko);
cout << c << endl;
if ((int)lpud - lpud == 0)
cout << lpud << endl;
if ((int)lpud - lpud != 0)
cout << ceil(lpud) << endl;
c=0;
}

return 0;

}

Jak mogły Ci wyjść testy jeśli twierdzisz, że kod nie przeszedł kompilacji?
Twój kod jest bardzo zawikłany i niepotrzebnie skomplikowany. W tym zadaniu można sobie poradzić bez użycia tablic a Ty wprowadzasz dwie tablice. Po co rozpoczynasz licznik w pętli od i=1 a później dajesz indeks tablicy i-1? Jeśli licznik będzie startował od 0 to indeks tablicy i licznik będą zgodne (to nie jest błąd ale niepotrzebne zamieszanie). Lepiej nie używaj polskich znaków bo widzisz jak to wychodzi. Zresztą po co to wypisujesz? Zwróć uwagę w treści zadania co masz prawo (i obowiązek) wypisać. Wypisanie czegoś więcej jest błędem.

Dzięki za odpowiedź!
Zdaję sobie sprawę, że kod mógłby być prostszy - jest to mój praktycznie samodzielny pierwszy program (biorę udział w kursie C++ na stronie pana Mirosława Zelenta) i to jest takie pierwsze “poważniejsze” zadanie domowe. A kod skopiowałem prosto z Codebloxa i chodzi o to, że tam wprowadzałem przykładowe dane, przeliczałem i działało :frowning:

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.