Latimeria27 Temat założony przez niniejszego użytkownika |
Poziom 2, rozdział 15 - zadanie domowe nr 1 error: "ld returned 1 exit status" » 2018-11-21 18:47:53 Cześć, Jak w tytule wiadomości - nie mam możliwości kompilacji ze względu na błąd: "ld returned 1 exit status". Oto mój kod: #include <iostream> #include <limits>
int main() { int liczba; do { std::cin.clear(); std::cin.ignore( std::numeric_limits < std::streamsize >::max() ); std::cout << "Podaj liczbe: "; std::cin >> liczba; } while( std::cin.fail() ); std::cout << liczba << std::endl; return 0; } Wiem, że nie może być czyszczenia zanim wczytam liczbę. Wiem, że mogę to zrobić przy użyciu bool (nawet tak miałam przez chwilę). Przerzuciłam 20 stron forum poszukując różnych źródeł, przy czym nie chodziło mi o gotowy kod, raczej o wskazówkę. W związku z tym kod był wielokrotnie modyfikowany i wydaje mi się, że nie jestem aż tak daleko od prawidłowego rozwiązania :) Na forum jest wielokrotnie przywoływana funkcja std::cin.sync(), ale nie jest rekomendowana w kursie. Bardzo proszę o wskazówkę lub o cokolwiek, co mnie naprowadzi - to już trzecie popołudnie jak to próbuję rozwikłać :) Magda |
|
pekfos |
» 2018-11-21 18:51:45 ld returned 1 exit status |
A komunikat błędu jak brzmi? |
|
Latimeria27 Temat założony przez niniejszego użytkownika |
» 2018-11-21 18:57:01 Komunikat brzmi: cannot open output file (tutaj ścieżka do pliku .exe) Permission denied. |
|
pekfos |
» 2018-11-21 18:59:29 Nie możesz pisać do pliku, który jest w użyciu. Albo gdy jest uruchomiony. |
|
Latimeria27 Temat założony przez niniejszego użytkownika |
» 2018-11-21 19:10:46 Dziękuję za tą informację. Nie widziałam, że plik jest uruchomiony - odkopałam to dopiero w managerze zadań.
Nie zmienia to jednak faktu, że kod nadal nie działa. Uruchamia się i pozwala mi wpisywać liczby oraz znaki. Wydaje mi się, że problem jest na wyjściu z pętli. Gdy miałam dodatkową zmienną typu bool to program dla wpisanej liczby zapętlał się w nieskończoność, a dla wpisanej litery wyświetlał, że "podałeś liczbę 0" i się kończył.
Próbuję modyfikować również pozycję czyszczenia i ignorowania, ale przypuszczalnie musi to być gdzieś pomiędzy do i while, ale przed wpisaniem liczby.
|
|
pekfos |
» 2018-11-21 19:22:04 Pokaż wersję ze zmienną bool. |
|
Latimeria27 Temat założony przez niniejszego użytkownika |
» 2018-11-21 19:26:32 To było coś w ten deseń (możliwe, że troszkę inaczej to wyglądało): #include <iostream> #include <limits>
int main() { int liczba; bool CzyBlad1 = std::cin.fail(); do { std::cout << "Podaj liczbe: "; std::cin.clear(); std::cin.ignore( std::numeric_limits < std::streamsize >::max() ); std::cin >> liczba; bool CzyBlad1 = std::cin.fail(); } while( CzyBlad1 == 0 ); std::cout << "Podales liczbe" << liczba << std::endl; return 0;
Dodatkowo mam teraz błąd: Process terminated with status -1073741510 (0 minute(s), 5 second(s)) - nie jestem w stanie zakończyć programu inaczej niż przez X albo ESC. |
|
YooSy |
» 2018-11-21 19:36:41 { bool CzyBlad1 = std::cin.fail(); } while( CzyBlad1 == 0 ); Poczytaj o zasięgu zmiennych i ich zakrywaniu. Ta zmienna zadeklarowana wewnątrz pętli jest niewidoczna poza klamrą w warunku pętli, a zakrywa zmienną o tej samej nazwie zadeklarowaną przed pętlą, więc jej wartość nie jest modyfikowana przez program. |
|
« 1 » 2 3 |