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

Zadanie 1 Rozdzial 17

Ostatnio zmodyfikowano 2016-07-27 17:04
Autor Wiadomość
RockerFeller
Temat założony przez niniejszego użytkownika
Zadanie 1 Rozdzial 17
» 2016-07-27 14:44:40
Witam otoz nie moglem wykonac zadania nie wiem co moge poprawic kod to
C/C++
#include <iostream>
using namespace std;

int wczytajLiczbe()
{
    int cyferka;
    do
    {
        cin >> cyferka;
        if( !cin.good() )
        {
            cin.clear();
            cin.ignore();
            cout << "Nie podano liczby.\nProsze ponownie o podanie liczby.";
        }
    }
    while( cin.good() );
   
    if( cin.good() )
    {
        return cyferka;
    }
}

int main()
{
    cout << "Podaj liczbe: ";
    int liczba = wczytajLiczbe();
    cout << "Podales liczbe: " << liczba << std::endl;
    return 0;
}
Pisalem to na telefonie i logow nie mam ale dzialanie tego kodu jest nastepujace.
-Podano litere -> Prosi o podanie liczby.
-Podano liczbe -> Nic nie robi i czeka az znowu cos podam.


--------'

Mam logi
Podaj liczbe:
input: gjjc
Nie podano liczby.
Prosze ponownie o podanie liczby.
input: 467

input: fujvf
Nie podano liczby.
Prosze ponownie o podanie liczby.
P-150304
kistel66
» 2016-07-27 14:51:32
Zamień swój kod na coś takiego:
C/C++
#include <iostream>
using namespace std;

int wczytajLiczbe()
{
    int cyferka;
   
    while( !( cin >> cyferka ) )
    {
        cout << "Nie podano liczby.\nProsze ponownie o podanie liczby.";
        cin.clear();
        cin.sync();
    }
   
   
   
    if( cin.good() )
         return cyferka; //jak jest tylko jedna instrukcja to klamry są niepotrzebne
   
}

int main()
{
    cout << "Podaj liczbe: ";
    int liczba = wczytajLiczbe();
    cout << "Podales liczbe: " << liczba << endl; // na poczatku masz using namespace std, wiec nie ma potrzeby pisać tutaj std::endl
    return 0;
}

Powinno śmigać
P-150305
RockerFeller
Temat założony przez niniejszego użytkownika
» 2016-07-27 14:56:09
Zmienilbym ale wole uzywac tylko rzeczy poznanych do tej pory a petli while jeszcze nie widzialem. A i logi mam zaraz dam.

----
A tamto std:: mam bo kopiowalem kod a kursu.
Klamry stawiam z przyzwyczajenia.
P-150306
kistel66
» 2016-07-27 15:02:44
Pętla do while od samego while niewiele się różni.

W while na samym początku podajemy warunek, na podstawie którego pętla ma działać. Jeśli warunek jest nieprawdziwy - pętla się nie wykona.

Z kolei do... while najpierw wykonuje pętle, a dopiero potem sprawdza warunek. Czyli może on być niepoprawny, a pętla i tak wykona się chociaż raz.
P-150307
RockerFeller
Temat założony przez niniejszego użytkownika
» 2016-07-27 15:04:43
Tak myslalem bo wczesniej pisalem w lua a tamto podobne strasznie ale nie identyczne.

------------

Nie podano liczby.
Prosze ponownie o podanie liczby.
Nie podano liczby.
Prosze ponownie o podanie liczby.
Nie podano liczby.
Prosze ponownie o podanie liczby.
Komunikat po wpisaniu litery. I tak w nieskonczonosc.

---------

Dzialanie petli rozumiem nawet for. Bo to bylo w lua taksamo jak if.
P-150308
kistel66
» 2016-07-27 15:26:14
Nie wydaję mi się, by było to możliwe. U mnie wszystko działa bez zarzutu
Screen na dowód http://i.imgur.com/ts6ndk9.png.
P-150309
RockerFeller
Temat założony przez niniejszego użytkownika
» 2016-07-27 15:33:07
Zobacz co sie stalo bo wpisaniu litery 
http://www11.zippyshare.com/v/8j5acmn1/file.html
A przy liczbie normalnie. Nawet nie dalo sie zobaczyc co wpisalem bo petla sie zapetlila.
P-150310
carlosmay
» 2016-07-27 15:41:21
C/C++
while( !( cin >> liczba ) ) {
    cin.clear();
    cin.ignore( numeric_limits < streamsize >::max(), '\n' );
}
P-150311
« 1 » 2
  Strona 1 z 2 Następna strona