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

Lekcja 15 Zadanie domowe 1

Ostatnio zmodyfikowano 2013-04-10 19:19
Autor Wiadomość
MisiekFazi
Temat założony przez niniejszego użytkownika
Lekcja 15 Zadanie domowe 1
» 2013-04-10 17:23:03
Witam otóż mam problem w zadaniu 1. Wszystko jest dobrze i program rozpoznaje jakie ma liczby wczytać i co wtedy ale problem leży z warunkiem if. Oto program

C/C++
#include <iostream>
using namespace std;
main()
{
    cout << "Witamy w programie." << endl << "Prosze podac liczbe calkowita wieksza od 5, mniejsza od 10" << endl;
    int liczba;
    do
    {
        cout << "Podaj liczbe ";
        cin >> liczba;
        if( liczba <= 5 || liczba >= 10 )
             cin.clear();
       
        cout << "Zla liczba. Musisz podac poprawne liczby. Zacznij od nowa." << endl;
    } while( liczba <= 5 || liczba >= 10 );
   
    cout << "To jest poprawna liczba. Dzieki za skorzystanie";
    return 0;
}


Gdy podam liczbę całkowita program działa poprawnie jeśli jest równa lub mniejsza od 5 to wie co robić i tak dalej. Ale jeśli liczbę podam po przecinku to jest problem i wyświetla wiadomość "zla ....." bez przerwy. Co to powoduje czy zle zdefiniowana zmienna czy można to jakoś wyeliminować
P-80326
MrPoxipol
» 2013-04-10 17:30:55
Nie zabezpieczasz wczytywania, przed złymi danymi. Kod załącz w znacznik
[cpp][/cpp]
.
Wypisuj "zła liczba..." tylko gdy liczba będzie zła. Czyść za każdym razem.
P-80327
MisiekFazi
Temat założony przez niniejszego użytkownika
» 2013-04-10 18:06:33
ok nie wiem czy dobrze

C/C++
#include <iostream>
using namespace std;
main()
{
    cout << "Witamy w programie." << endl << "Prosze podac liczbe calkowita wieksza od 5, mniejsza od 10" << endl;
    int liczba;
    do
    {
        cout << "Podaj liczbe ";
        cin >> liczba;
        if( liczba <= 5 || cin.fail() || liczba >= 10 )
             cin.clear();
       
        cout << "Zla liczba. Musisz podac poprawne liczby. Zacznij od nowa." << endl;
    } while( liczba <= 5 || liczba >= 10 );
   
    cout << "To jest poprawna liczba. Dzieki za skorzystanie";
    return 0;
}
I nadal jest źle, jakby ktoś mógł mi podać jak powinno być poprawnie. 
P-80333
megatron
» 2013-04-10 18:25:02
skoro ma być większa to czemu piszesz
liczba < 5
???
powinno być
if( liczba > 5 && liczba < 10 )

#@#EDIT#@#
sry; powinno być mniej więcej tak:
C/C++
#include <iostream>
using namespace std;
main()
{
    cout << "Witamy w programie." << endl << "Prosze podac liczbe calkowita wieksza od 5, mniejsza od 10" << endl;
    int liczba;
    do
    {
        cout << "Podaj liczbe ";
        cin >> liczba;
        if( liczba >= 5 && liczba <= 10 ); ///sprawdza czy wczytana liczba miesci się w przedziale 5-10
        else ///jesli nie to wyswietla ponizszy napis
             cout << "Zla liczba. Musisz podac poprawne liczby. Zacznij od nowa." << endl;
       
    } while( liczba <= 5 || liczba >= 10 );
   
    cout << "To jest poprawna liczba. Dzieki za skorzystanie";
    return 0;
}
P-80334
MisiekFazi
Temat założony przez niniejszego użytkownika
» 2013-04-10 18:38:52
Ale to nadal nie rozwiązuje problemu z liczbami po przecinku.
P-80335
megatron
» 2013-04-10 18:43:12
to zadeklaruj 2 typy zmiennych np. int i double, a potem zrób coś takiego, że z double przechodzi na int;
zmienna_typu_int = zmienna_typu_double;
P-80336
MisiekFazi
Temat założony przez niniejszego użytkownika
» 2013-04-10 18:50:05
a nie ma możliwość że gdy zostanie wpisana zła liczba powracała do funkcji cin
P-80337
megatron
» 2013-04-10 19:01:20
no z tym by było ciężej

musisz sprawdzac wielkosci liczb; przyklad:

C/C++
#include <iostream>
using namespace std;
main()
{
    cout << "Witamy w programie." << endl << "Prosze podac liczbe calkowita wieksza od 5, mniejsza od 10" << endl;
   
    double liczba;
    int liczba1;
   
    do
    {
        do
        {
            cout << "Podaj liczbe ";
            cin >> liczba;
           
            liczba1 = liczba;
           
            if( liczba1 >= 5 && liczba1 <= 10 );
            else
           
                 cout << "Zla liczba. Musisz podac poprawne liczby. Zacznij od nowa." << endl;
           
        } while( liczba != liczba1 );
       
    } while( liczba < 5 || liczba > 10 );
   
    cout << "To jest poprawna liczba. Dzieki za skorzystanie";
    return 0;
}
P-80339
« 1 » 2
  Strona 1 z 2 Następna strona