21 / 192
Sep 2015

Hej, Pierwszy raz rozwiązuje zadanie na SPOJ i juz pierwsze problemy. Gdzie ja mam błąd w kodzie? U mnie wszystko dobrze kompiluje, chyba wszystkie przypadki założyłam, ale może tutaj jest cos inaczej odczytywane. Błagam o pomoc, ledwo zaczęłam, a juz jestem zniechęcona:(

for(int i=0; i<os;i++)
{c[i]=floor(86400/t[i]);
suma+=c[i];
}
suma/=szt;
cout<<ceil(suma)<<endl;

return 0;

}

To zadanie nie współpracuje z ceil-em (sprawdziłem na moim zatwierdzonym kodzie), będziesz musiał if-ować. Pewnie jakiś błąd zaokrąglenia z liczbami zmiennoprzecinkowymi

Ok, dzięki, to dobrze wiedzie, że chyba dobrze rozwiązałam, ale tak jak mówisz, przerobie program. Dzięki serdeczne:)

Zapomniałem wspomnieć, usuń kod z forum jak już ci zacznie działać

Cześć proszę Was o pomoc.
Moje rozwiązanie wygląda tak:

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

int main(){
	long double calosc=0;
	int a;
	long long int N;
	long long int M;
	long double wynik;
	cin >> a;
	for (int i = 0; i < a; i++) {
		cin >> N >> M;
		int *tablica = new int[N];
		for (int j = 0; j < N; j++) {
			cin >> tablica[j];
			calosc += floor((24*60*60) / tablica[j]);
		}
		wynik = calosc / M;
		cout << ceil(wynik);
		calosc = 0;
	}
	return 0;
}

SPOJ wyświetla mi błędną odpowiedź. Nie wiem co jest nie tak, przy przykładowych danych jest ok.

Nie nie jest ok, bo mi wyświetla 82 przy przykładowych danych. Wczytuj wejście z pliku albo testuj np na ideone, wtedy będziesz widział że zapomniałeś o << "\n". Poza tym jak już pisałem wyżej to zadanie nie współpracuje z ceil-em.

ps na chwilę obecną dodawanie kodu na tym forum leży i kwiczy, lepiej wkej na ideone.com i daj tu linka.

Nie zupełnie. Nie ma tagu bbone, ale jest znacznik [tag] preformatted text [</>], wystarczy zaznaczyć kod i kliknąć w ten znacznik lub ctrl+K. Być może wystarczającym jest też tag quote.
Właśnie tak poprawiłem post krakersa, ale oczywiście wklejenie linku do ideone.com też jest b. dobrym pomysłem.

Dlaczego pokazuje, że jest źle? Skoro wszystko działa dla różnych przykładów

Powywalaj zbędne endl oraz pytania, i usuń kod z forum bo sędzia go przyjmie. Odpowiedzą na zestaw z zadania ma być

8
2

a nie

Ile zestawow: Podaj liczbe uczestnikow i ilosc ciastek w pudelku dla zestawu: Podaj 1 czas jedzenia ciastka: Podaj 2 czas jedzenia ciastka: 
8

Podaj liczbe uczestnikow i ilosc ciastek w pudelku dla zestawu: Podaj 1 czas jedzenia ciastka: Podaj 2 czas jedzenia ciastka: Podaj 3 czas jedzenia ciastka: 
2

Swoją drogą to pierwszy kod z ceil-em jaki widzę przyjęty przez sędziego.

ps po co ci ta tablica skoro z niej nie korzystasz?

16 days later

witam! smiley
wrzucę tutaj cały swój kod łącznie z cout'ami (to dla klarowności kodu, sprawdzajac wrzuce go juz bez cout'ów). mam do was ogromną prośbę: pomóżcie znaleźć mi bład w tym kodzie. za nic w świecie nie moge go znaleźć, u mnie na PC wszystko działa i kompiluje poprawnie ale jak tylko wrzuce go do sprawdzenia to wyskakuje mi że jest błąd frowning

include

using namespace std;
int ile,ciastka,t;
int x=0;
int y;
int main()
{
cout<<"podaj liczbe testow"< cin>>t;
for(int i=0; i {
cout<<"ilu obzartuchow jest na zlocie? ";
cin>>ile;
int czasy[ile];
cout<<"ile jest ciastek w jednym pudelku? ";
cin>>ciastka;
for(int i=0; i {
cout<<"podaj czas w sekundach w jakim "<< i+1 <<" obzartuch zjada ciastko: ";
cin>>czasy[i];
y=86400/czasy[i];
x+=y;
}
if ((x%ciastka)==0)
cout<<"potrzeba "<< x/ciastka <<"opakowan ciastek"< if ((x%ciastka)!=0)
cout<<"potrzeba "<< x/ciastka+1 <<" opakowan ciastek"< }
return 0;
}

z góry dziekuje za pomoc! smile

Wklej kod w tagu dostępnym pod ctrl + k, to będzie sformatowany, wtedy się popatrzy. Tak na szybko: w którym miejscu zerujesz x-a? Najlepiej przesuń go do FOR-a, zmienne globalne to dość problematyczny pomysł. Najlepiej t daj w main-ie a całą resztę w forze.

Tworzysz tablicę o rozmiarze nieznanym (n wczytujesz dopiero później) i się dziwisz że ci błędami rzuca? Wywal ją całkiem (bo do niczego jej nie wykorzystujesz), zrób sobie inta w 2-giej pętli for i na nim operuj. Wtedy dostaniesz AC.

edit: kod dawaj w taku dostępnym przez ctrl + k, i usuń go z forum jak już ci zadziała.

4 months later

zamiast tego daj ilosc+= 86400 / czas[i-1]; i usuń kod z forum bo będzie AC

Swoją drogą po co ci ta tablica? starczyła by pojedyncza zmienna

Witam
Jestem nowy i jest to moje pierwsze(nie licząc zadania próbnego) zadanie. Dopiero zaczynam uczyć się c++ i potrzebuje pomocy w rozwiązaniu tego zadania. Problem polega na tym, że po wprowadzeniu pierwszej instrukcji wszystko dział prawidłowo, ale dla drugiej instrukcji wyświetla wynik 0. Nie wiem na czym polega problem, i jak mowie dopiero zaczynam, wiec być może jest to jakiś oczywisty błąd.

Będę wdzięczny za każda rade wink
Z góry dziękuje za pomoc.

   #include <iostream>

using namespace std;

int testy;
int obzartuchy;
int ciastka;
int wynik;



int main()
{
    cin>>testy;
    for(int i=1; i<=testy; i++)
    {
        cin>>obzartuchy>>ciastka;
        int czas[obzartuchy];

        for(int a=1; a<=obzartuchy; a++)
        {
            cin>>czas[a-1];
        }

        for(int b=1; b<=obzartuchy;b++)
        {


            wynik=3600/czas[b-2]*24+3600/czas[b-1]*24;

        }


        while(wynik%10!=0)
            wynik++;
        cout<<wynik/ciastka<<endl;

    }


    return 0;
}

Moim zdaniem powinieneś od nowa przemyśleć algorytm, bo obecny wydaje mi się błędny. Swoją drogą przenieś deklarację zmiennych z wyjątkiem testy do pętli for albo przynajmniej je zeruj co obrót pętli, bo obecnie zostają w nich wartości z poprzedniego co może mieć wpływ na wyniki końcowe. Inna sprawa że przydało by się nadać nim wartość początkową, bo obecnie jest losowa co też może mieć wpływ na wyniki.

22 days later

Hej, rzuci ktoś mądry okiem na to? Generalnie działa, tylko mam taki problem, że gdzieś coś pomieszałem z pętlą, bo po wypisaniu na ekran wyniku z pierwszego testu wyniki z drugiego dodaje do tego pierwszego, a nie liczy ich od nowa. Proszę o wskazówki.

include

include

using namespace std;

int main()
{
float suma=0;
int t;//Podaj liczbê tesów do wykonania
int n;//ilu ob¿artuchów
int d=86400;//liczba sekund w dobie
float czas[100000];//czas zjadanie jednego ciastka
long m;//ile ciastek w jednym pudelku
float wynik;
cin>>t;
for(int i=1; i<=t; i++)
{
cin>>n>>m;

for(int k=1; k<=n; k++)
{
cin>>czas[k];
czas[k]=floor(d/czas[k]);
suma=suma+czas[k];
cout<}
wynik=suma/m;
cout<

}

return 0;

}

Hmm ja nie jestem orłem, nie sprawdzałem działania twojego kodu, bo jest z nim na pewno coś nie tak na końcu, ale jak użyjesz floor to dostaniesz wynik zaokrąglony w dół, a Ty potrzebujesz ewentualnie zaokrąglić w górę - ceil, zgodnie z treścią zadania. Dodatkowym problemem jest pewnie to, że nie czyścisz tablicy na koniec danego testu i prawdopodobnie pozostają w niej śmieci z poprzedniego testu. Możesz sprawdzić moje wskazówki, ale zaznaczam, jak już napisałem, że nie jestem orłem.

Daj kod w tagach dostępnych pod ctrl + k albo linkuj do ideone, obecnie jest pocięty i nie wiadomo co z nim jest nie tak. Nie widać np co i jak wypisujesz