118 / 192
Feb 2018
#include <iostream>

using namespace std;
int ile,grubasy,zjedzone,paczka,zjedzone2,ciastka;


int t[1000];
int pudla;


int main()
{

cin>>ile;
for(int i=1; i<=ile; i++)
{

cin>>grubasy>>ciastka;

for (int i=1; i<=grubasy; i++)
{


cin >>t[i];

zjedzone=86400/t[i];

zjedzone2=zjedzone2+zjedzone;

}

pudla=zjedzone2/ciastka;

   if (pudla*ciastka<zjedzone2) {pudla=pudla+1;}

zjedzone2=0;

cout<<pudla<<endl;

}

    return 0;
}

Powie mi ktoś co tutaj jest nie tak ? Cały czas błąd wykonania ;/ Program liczy wszystko dobrze

11 days later

Generalnie działa podaję dokładną liczbę dla pojedynczego obżartucha poniżej zaokrągla tą liczbę zsumuje też ilości obżartuchów dla danej próby.
Nie wiem dokładnie co jest nie tak, ale wydaje mi się, że błąd leży w tym, że zaokrągla po każdym obżartuchu, a powinien po każdej próbie, ale nie wiem jak tego dokonać. Już tydzień edytuje ten program i nie mogę nic wymyślić.
Bardzo proszę o pomoc.

Generalnie nie działa. Wyjście, jakie masz mieć to 8 i 2, a nie cuda typu 0.00735467.

Domyślam się, że wyświetlasz jakieś obliczenia pomocnicze, ale nie oczekuj, że ktoś będzie wczytywał się w kod programu, który nie wyświetla tego co powinien i będzie analizował za co odpowiadają kolejne zmienne i jak wyniki pomocnicze mają się do ostatecznego.

Okomentuj albo usuń linie kodu, które wyświetlają cokolwiek innego niż określono w specyfikacji outputu.

EDIT
Rzuciłem okiem na wybrane fragmenty kodu i szczerze mówiąc kiepsko to widzę…

  1. Nie używaj float do obliczeń zmiennoprzecinkowych, o ile nie jest to absolutnie konieczne
  2. float obzartuchow[l]; - nie tak alokuje się tablice dynamiczne
  3. Na SPOJu nie trzeba tablicować wyników
  4. W tym zadaniu w ogóle nie potrzeba tablic
  5. Nazwy zmiennych powinny być samoobjaśniające się. y, l oraz o zdecydowanie takimi nie są
  6. Dlaczego tak mieszasz z zakresami ważności? Czy wiesz do czego służą klamry w cpp?
  7. Po co Ci iomanip?
  8. Dlaczego masz nieprawidłową indentację?

EDIT2

Dostosuj się do wymienionych powyżej punktów oraz uwag i jedziemy z koksem :wink:

Wielkie dzięki za pomoc.
Tablice stworzyłem, bo nie wiedziałem jak zrobić aby program zapisywał wynik dla każdego kolejnego obżartucha.
Generalnie poczytam o wszystkim co mówiłeś i ruszam do boju :slight_smile:
Jeszcze raz wielkie dzięki za pomoc :sunny:

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;
	}

}