1 / 11
Aug 2017

Pewnie jakaś pierdoła...

"Na wejście programu podana zostanie pewna nieokreślona, ale niewielka ilość zestawów danych."

Dlaczego wczytujesz liczbe testow jesli wiesz, ze jest ona nieokreslona.

Odnosnie wczytywania zestawow o nieokreslonej liczbie jest wiele postow... Wystarczy w google wpisac jak sie to robi.

Co do optymalizacji... Po co Ci tablice?
Natomiast jesli watek juz istnieje to go znajdz i tam dopisz, a nie tworzysz nowy

Dzięki za podpowiedź. Jeśli chodzi o zestawy to przyzwyczajenie z poprzednich zadań. Przynajmniej nauczyłem się czegoś nowego. Poprawka weszła , optymalizacja kodu też ( usunąłem tablice ) , wszystko działało ale sędzia nie chciał przyjąć. Okazało się , że double jest lepsze od float. Zaliczone , dzięki !

1 month later

Cześć,

Również walczę z zadaniem “Równianie kwadratowe” (C++). Kod wydaje mi się dobry jednak, sędzia w zależności od kompilatora pokazuje błędy, dla:

  1. C++ (gcc 6.3) błędna odpowiedź;
  2. C++ (g++ 4.3.2) błąd kompilacji (‘stold’ was not declared in this scope).
    Proszę o pomoc w poprawie kodu, z góry dzięki.
    https://4programmers.net/Pastebin/73667

komunikat całkowicie jasny - w wersji 4.3.2 nie ma takiej funkcji w

powinieneś uzupełnić swoją wiedzę o operacjach wejścia

Te liczby nie są w osobnych liniach, tylko oddzielone spacjami. Wczytywanie możesz zrobić tak:

double a,b,c;
while(cin >> a >> b >> c){
	//twój algorytm
}

i skupić się na istocie problemu :wink:

Dzięki, zmiana tego warunku pomogła, zadanie zostało zaliczone, aczkolwiek mam jedną wątpliwość. Mój kod realizował przerwanie programu w momencie, który nie podawana była żadna wartość (znak biały/konca lini/enter) tj. po naciśnięciu “entera” program się kończył. Natomiast w tym warunku while(cin >> a >> b >> c), po naciśnięciu “entera” program przechodzi do nowej linii, ale dalej czeka na wprowadzenie dancyh.
Dlaczego rozwiązanie z zakończeniem programu nie było przyjmowanie?
Czy jest to błąd merytoryczny, jeśli tak jaki temat operacji wejścia został tutaj poruszony, który sprawił ten błąd? Czy był to błąd konceptualny??

W skrócie: spoj to automat, wejście wysyłane do zadania możesz traktować jak plik, a while(cin) kończy wczytywać dane, gdy napotka znak końca pliku (lub też nastąpi błąd wczytywania). Zazwyczaj w zadaniu wskazane jest ignorowanie białych znaków.
Potraktuj to jako gotowca, a jak to działa możesz sie dowiedzieć z dobrych książek/tutoriali o C++ (np. C++ Szkoła programowania).

Na konsoli sygnalizujesz [symulujesz] koniec pliku [koniec danych] ctrl+D lub ctrl+Z [w zależności od systemu - linux/windows/dos].
Dodatkowo, powinieneś poczytać/poznać zagadnienie przekierowania standartowych strumieni wyjścia/wejścia do/z pliku/ów.