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

Wczytywanie oczekiwanego typu zmiennych.

Ostatnio zmodyfikowano 2013-06-12 12:45
Autor Wiadomość
pekfos
» 2013-06-10 19:36:29
to program rzutuje tą wartość na wartość o typie
Nieprawda.
P-85314
Berux
» 2013-06-10 19:48:02
@up:

To co robi?
P-85317
pekfos
» 2013-06-10 19:59:55
Odczytuje to, co pasuje do wczytywanego typu, a resztę zostawia.
P-85319
obi2exe
Temat założony przez niniejszego użytkownika
» 2013-06-10 22:55:57
Cóż, nikt nie wymyśli nic bardziej błyskotliwego??? Na pewno istnieje kilka dróg rozwiązania tak podstawowego problemu. Jeżeli ma ktoś jakieś pomysły albo doświadczenia związane z rozwiązaniem tej łamigłówki proszę pisać, będę przeglądał to forum.
P-85354
DejaVu
» 2013-06-10 23:09:58
Najlepszą metodą jest wywołanie
C/C++
std::getline( cin, sTekst );
a następnie odczytanie tego co zostało wczytane. Odczytywanie liczby należy wówczas zrobić za pomocą funkcji » standard Cstrtod. Jeżeli wartość *pEnd będzie równa 0 to będzie to znaczyło, że wczytywanie liczby powiodło się (o ile string miał długość większą od zera).
P-85360
obi2exe
Temat założony przez niniejszego użytkownika
» 2013-06-11 09:36:39
OK, sprawdzę to.
P-85367
cichociemny
» 2013-06-11 15:57:51
Wystarczy tylko wlasciwie zastosowac petle while i problem bedzie rozwiazany
ps.
mala podpowiedz:
C/C++
int main()
{
    float liczba;
    while( true )
    {
        cout << "Wprowadz liczbe naturalna: ";
        cout << endl;
        // w ponizszej petli program sprawdzi czy wprowadzona liczba jest liczba calkowita;
        while( cin >> liczba && !czyCalkowita ) // utworz funkcje bool sprawdzajaca czy calkowita z uzyciem konwersji, ktora juz zostala tu pokazana;
        {
            //cos tam cos tam....
        }
        cout << endl;
        // w tej natomiast petli program  sprawdzi czy wprowodazona zostala liczba, a nie jakies np litery czy inne char. i czy wprowadzona liczba jest wieksza od 0;
        while( !( cin >> liczba ) || liczba <= 0 )
        {
            // cos tam cos tam...w obu przypadkach zastosuj czyszczenie strumienia!
           
        }
        // cos tam cos tam...
    }
    cout << endl;

// program nie ruszy dalej dopoki uzytkownik nie wprowadzi poprawnie oczekiwanej zmiennej, czyli liczby naturalnej
// troche to jednak skomplikowane, ponizej prostsza wersja

C/C++
loop: cout << "Wprowadz liczbe naturalna : "; // nieszczesne goto, ale tu ulatwia


while( !( cin >> liczba ) || liczba <= 0 )
{
   
    cout << "Wprowadzono niepoprawne dane !!!\n"
    << "Sprobuj jeszcze raz :)\n";
    cin.clear();
    cin.ignore( 10000, '\n' );
    cout << "Wprowadz liczbe naturalna : ";
   
}
if( !czyCalkowita( liczba ) ) // tu ponownie funkcja bool, o ktorej byla wczesniej mowa
{
   
    cout << "Wprowadzona liczba nie jest liczba naturalna !!!\n"
    << "Sprobuj jeszcze raz :)\n";
    cin.clear();
    cin.ignore( 10000, '\n' );
    goto loop;
   
}
// tutaj rowniez liczba jest float
P-85386
Kapuśniaczek96
» 2013-06-11 19:24:02
Sam wykonywałem wczoraj to zadanie i zapomniałeś dodać zabezpieczenie przed tym jeżeli użytkownik wpisze liczbę poniżej 1 albo większą niż 1000. No i warto rozważyć (przynajmniej ja tak zrobiłem) nad wyświetleniem komunikatu, że podana liczba jest większa lub mniejsza od wylosowanej.
P-85391
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona