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
» 2018-11-21 19:45:49
Dziękuję za wskazówki. Próbowałam różnych opcji - z "bool" lub bez - to nie była oryginalna opcja, ponieważ pracuję na jednym kodzie (żaden do tej pory nie zadziałał niestety optymalnie) i bool został przeze mnie dopisany teraz na prośbę pefoksa. Widziałam na forum propozycje kodów bez "bool" i sugestie, że takie rozwiązanie też jest możliwe, dlatego sama zrezygnowałam z bool.

Na ten moment niestety cały czas mam błąd: Process terminated with status -1073741510 (0 minute(s), 5 second(s)).

 
P-172919
YooSy
» 2018-11-21 19:54:23
C/C++
int n;
while( !( std::cin >> n ) ) {
    std::cin.clear();
    std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
}
std::cout << n << '\n';
W twoim kodzie dodaj jeszcze pobieranie liczby przed pętlą lub sprawdzaj stan strumienia przed czyszczeniem,
bo metoda
igonre
 czeka na cokolwiek do zignorowania jeśli bufor strumienia jest pusty.

Ah.. i przeoczenie. Brakuje znaku kończącego, go którego metoda
ingore
 ma ignorować znaki.
P-172920
pekfos
» 2018-11-21 20:04:59
Widziałam na forum propozycje kodów bez "bool" i sugestie, że takie rozwiązanie też jest możliwe, dlatego sama zrezygnowałam z bool.
Propozycje bez zmiennej bool padają od osób, którym najwyraźniej w głowie się nie mieści, że rozwiązanie zadania z kursu powinno wykorzystywać wiedzę z kursu do tego punktu. Bez dodatkowej zmiennej trzeba albo użyć break, albo pętli while tak jak w tym kopiowanym do bólu skróconym kodzie, który z pewnością zaraz się tu.. ups, za późno!

Poprawne rozwiązanie to dodanie pętli do przykładowego kodu z » Kurs C++ » Poziom 1Obsługa strumienia wejściowego lekcja. Jedyne o czym trzeba pamiętać, to zasięg zmiennych.

Na ten moment niestety cały czas mam błąd: Process terminated with status -1073741510 (0 minute(s), 5 second(s)).
Niech zgadnę, zamykasz okno konsoli Xem.
P-172921
Latimeria27
Temat założony przez niniejszego użytkownika
» 2018-11-23 18:33:34
Udało mi się zmodyfikować kod i uzyskać coś takiego:

C/C++
#include <iostream>
#include <limits>

int main()
{
    int liczba;
   
    do {
       
        std::cout << "Podaj liczbe: ";
        std::cin.clear();
        std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
        std::cin >> liczba;
        std::cin.fail();
    } while( std::cin.fail() );
   
    std::cout << "Podales liczbe " << liczba << std::endl;
    return 0;
}

Jest to rozwiązanie najbliższe poprawnemu. Program działa, ale dopiero za drugim wpisaniem liczby - pierwsza jest całkowicie ignorowana. Decyzja o poprawności bądź powtórzeniu zapada na podstawie drugiej liczby (testowane).

Co do błędu i zamykania Konsoli Xem - nie miałam jak jej inaczej zamykać - nie byłam w stanie zakończyć programu... :)

Dziękuję za wszystkie wskazówki - i tak wiem więcej o programowaniu niż miesiąc temu!
P-172958
pekfos
» 2018-11-23 18:49:34
Program działa, ale dopiero za drugim wpisaniem liczby - pierwsza jest całkowicie ignorowana.
Czyli nie działa.
P-172959
Latimeria27
Temat założony przez niniejszego użytkownika
» 2018-11-23 18:55:46
Tak tak wiem... Oczywiście, że nie działa. Chodziło mi o to, że moje poprzednie "opcje" były dużo bardziej oddalone od poprawnego działania :)
P-172960
YooSy
» 2018-11-23 20:00:02
metoda igonre czeka na cokolwiek do zignorowania jeśli bufor strumienia jest pusty.
 
P-172962
pekfos
» 2018-11-23 20:30:43
Dlaczego więc nie strzelać w dziesiątkę z poprawnym rozwiązaniem? Podałem wszystkie informacje. Mowa była o tym kodzie:
C/C++
int liczba;
std::cin >> liczba;
bool bCzyBlad = std::cin.fail();
std::cin.clear();
std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
Wymaga tylko minimalnych modyfikacji by można go było po prostu wrzucić do pętli. Wszystkie instrukcje są we właściwej kolejności. Dokładne działanie tych metod i dlaczego taka kolejność ma być, a nie inna, zostały opisane w "Czyszczenie zawartości strumienia wejściowego" w » Kurs C++ » Poziom 1Obsługa strumienia wejściowego lekcja.
P-172963
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona