123 / 192
Mar 2018

Silnik Discuss’a znów popsuł chronologię postów przy łączeniu wątków :frowning:

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?