Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Poziom 2, rozdział 15 - zadanie domowe nr 1 error: "ld returned 1 exit status"

Ostatnio zmodyfikowano 2018-11-24 17:46
Autor Wiadomość
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:
C/C++
#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

P-172910
pekfos
» 2018-11-21 18:51:45
ld returned 1 exit status
A komunikat błędu jak brzmi?
P-172912
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.
P-172913
pekfos
» 2018-11-21 18:59:29
Nie możesz pisać do pliku, który jest w użyciu. Albo gdy jest uruchomiony.
P-172914
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.

P-172915
pekfos
» 2018-11-21 19:22:04
Pokaż wersję ze zmienną bool.
P-172916
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):
C/C++
#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.
P-172917
YooSy
» 2018-11-21 19:36:41
C/C++
{
    // ...
    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.
P-172918
« 1 » 2 3
  Strona 1 z 3 Następna strona