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

[C++] Pętla do ... while - zadanie

Ostatnio zmodyfikowano 2014-06-26 16:02
Autor Wiadomość
Zrebol_33
Temat założony przez niniejszego użytkownika
» 2014-06-25 12:33:13
Nie mam już pomysłu jak to zrobić :/
Ostatnie co przyszło mi do głowy to:
C/C++
#include <iostream>
int main()
{
    float liczba;
    bool bliczba;
    do
    {
       
       
        std::cout << "Podaj liczbe: " << std::endl;
        std::cin >> liczba;
        bliczba = std::cin.good();
        std::cin.clear();
        std::cin.sync();
        std::cout << "Udalo sie? : " << bliczba << std::endl;
       
       
       
    } while( !bliczba );
   
    std::cout << "Podales liczbe " << liczba << std::endl;
   
    std::cout << "Koniec" << std::endl;
    return 0;
}
...dzięki :)
P-112709
Jacob99
» 2014-06-25 15:14:24
Wciąż nie używasz
bliczba
. Przypisujesz do niej wartość
std::cin.good()
, a nie sprawdzasz prawdziwego stanu strumienia.
Ten kod powinien wyglądać mniej więcej tak:
C/C++
#include <iostream>
int main()
{
    float liczba = 0;
    //char znak = 0;
    do
    {
       
       
        std::cout << "Podaj liczbe: " << std::endl;
        //ewentualnie, aby moc wyjsc z aplikacji:
        //std::cin.get(znak);
        //if(znak == '!')
        //      break;
        //  else
        //     std::cin.putback(znak);
        //std::cin >> liczba;
        if( !std::cin.good() )
        {
            std::cout << "Nie udalo sie wczytac liczby " << std::endl;
            std::cin.clear();
            std::cin.sync();
            continue;
        }
        else
             std::cout << "Wpisales liczbe : " << liczba << std::endl;
       
    } while( true );
   
    return 0;
}
Aby wyjść z programu musisz odkomentować linijki z kodem. Oczywiście znak wyjścia z aplikacji można zmienić.
Według treści zadania którą napisałeś w pierwszym poście pętla ma wczytywać i wypisywać liczbę, którą się wpisało. Nie wiedziałem czy to ma być jedna liczba, czy dowolna ich ilość, więc zrobiłem pętlę nieskończoną(przerywaną poleceniem
break
)
P-112719
Mateus.
» 2014-06-25 16:10:58
Jacob99 Używasz wyrażeń, których on na 99% nie zna, bo to jedna z pierwszych lekcji tego kursu.

Wszystkie linijki z
bliczba
 możesz usunąć. Strumień wejściowy powinieneś czyścić na początku pętli, a w warunek kończący może być np. taki:
while( !cin.good() );
P-112721
pekfos
» 2014-06-25 17:32:55
Jacob99: Piszesz nie na temat (znowu).
P-112728
Jacob99
» 2014-06-25 17:57:09
@Pekfos
A co napisałem (znowu) nie na temat?

@Mateus.
Może nie znać
cin.putback()
,
cin.get()
 i
continue
, resztę powinien znać, bo pętle są dopiero w 2 dziale kursu.
P-112739
Zrebol_33
Temat założony przez niniejszego użytkownika
» 2014-06-25 20:49:46
Dzięki wszystkim za pomoc :)

Mateus - zrobiłem jak kazałeś, lecz twój warunek
while( !cin.good() );
niezależnie od tego, czy wprowadzi się liczbę, czy literę...zawsze kończy działanie pętli.
W zadaniu mam podane:

1. Podaj liczbę
2. Jeżeli błąd, wróć do kroku 1. - chodzi mi o to :)
3. Wypisz liczbę, która została podana

P-112748
libed
» 2014-06-25 21:19:36
Ale po co tak kombinować? :)

 
C/C++
#include <iostream>

int main( int argc, char ** argv ) {
    int liczba;
    do {
        std::cin.sync();
        std::cin.clear();
        std::cout << "Podaj liczbe: ";
        std::cin >> liczba; // 1. wczytaj liczbe
    } while( !std::cin.good() ); // 2. jeśli błąd, wróć do pkt.1
   
    std::cout << "Wczytana liczba to " << liczba << "\n"; // 3.wyświetl liczbe
    return 0;
}
P-112750
pekfos
» 2014-06-25 22:16:27
A co napisałem (znowu) nie na temat?
Podałeś własne rozwiązanie niezgodne z zadaniem, którego dotyczy ten temat i niezgodne z poziomem wiedzy pytającego. Jeśli to taki problem się do tego dostosować, nie udzielaj się w tematach w dziale "Kurs C++ - pierwsza pomoc". Podawane rozwiązania mają być takie, do jakich mógłby dojść sam pytający, opierając się na wiedzy zdobytej w przerobionych lekcjach kursu. Rozwiązania wykraczające poza ten poziom, choćby były lepsze pod każdym względem, nie są odpowiedzią na zadanie z kursu, ani na tematy takie jak ten.
P-112752
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona