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

Zapętlanie się komunikatu o błędnej wartości wprowadzonej przez użytkownika.

Ostatnio zmodyfikowano 2013-11-05 21:54
Autor Wiadomość
BorntobeWild
Temat założony przez niniejszego użytkownika
Zapętlanie się komunikatu o błędnej wartości wprowadzonej przez użytkownika.
» 2013-11-05 20:33:44
Witam wszystkich :)

Podjąłem próbę napisania programu, który jest moją pracą domową.

Oto polecenie mojego programu:
Napisz program wczytujący z klawiatury n liczb całkowitych. Program ma znaleźć najmniejszą spośród podanych liczb oraz wydrukować na ekranie informację mówiącą o tym, ile razy najmniejsza liczba wystąpiła w podanym ciągu liczb.

Naskrobałem coś takiego:

C/C++
#include<iostream>

using namespace std;

int main()
{
    int ileliczb, licznikmin = 1, liczba, min;
    cout <<( "\n\nPodaj ile liczb wprowadzasz: " );
    cin >> ileliczb;
    min = 65535;
    cout <<( "\n\nPodaj liczby, kazda oddzielajac klawiszem enter:\n\n" );
    while( ileliczb <= 0 )
         cout << "Bledna ilosc liczb" << endl;
   
    while( ileliczb > 0 )
    {
        cin >> liczba;
        {
            if( liczba < min )
            {
                min = liczba;
                licznikmin = 1;
            }
            else if( liczba == min )
                 ++licznikmin;
           
        }
        --ileliczb;
    }
    cout << "Najmniejsza liczba to " << min << ", a wystepuje ona " << licznikmin << " razy" << endl;
    system( "pause" );
    getchar();
    return 0;
}

Działać działa ale jak wpisujemy ilość wprowadzanych liczb np. 0 albo -1 to cały czas się zapętla i wyświetla komunikat, który to chciałem żeby wyświetlał tylko raz. Próbuje i nie mogę dojść do tego, żeby się nie zapętlał.
P-95395
pekfos
» 2013-11-05 21:16:20
C/C++
while( ileliczb <= 0 )
     cout << "Bledna ilosc liczb" << endl;

Jak rozumiesz ten kod?
P-95400
BorntobeWild
Temat założony przez niniejszego użytkownika
» 2013-11-05 21:20:14
Rozumiem go w ten sposób, że gdy zmienna "ileliczb" jest mniejsza lub równa zeru to program ma wyświetlić komunikat "błędna ilość liczb".


Po głębszym namyśle zrobiłem coś takiego - działa ale nie wygląda mi to na poprawnie napisane:
C/C++
#include<iostream>

using namespace std;

int main()
{
    int ileliczb, licznikmin = 1, liczba, min;
    cout <<( "\n\nPodaj ile liczb wprowadzasz: " );
    cin >> ileliczb;
    while( ileliczb <= 0 )
    {
        cout << "Bledna ilosc liczb" << endl;
        return 0;
    }
    min = 65535;
    cout <<( "\n\nPodaj liczby, kazda oddzielajac klawiszem enter:\n\n" );
   
    while( ileliczb > 0 )
    {
        cin >> liczba;
        {
            if( liczba < min )
            {
                min = liczba;
                licznikmin = 1;
            }
            else if( liczba == min )
                 ++licznikmin;
           
        }
        --ileliczb;
    }
    cout << "Najmniejsza liczba to " << min << ", a wystepuje ona " << licznikmin << " razy" << endl;
    system( "pause" );
    getchar();
    return 0;
}


EDIT: Po zagłębieniu się w znaczenie słówka while doszedłem do wniosku, iż oznacza ono dopóki, czyli chyba muszę zastosować if-a. Poczytam trochę o jego składnii i spróbuję....
P-95401
docentpp
» 2013-11-05 21:40:58
Zastąp pierwszą pętlę następującym kodem :

C/C++
do
{
   
    cout <<( "\n\nPodaj ile liczb wprowadzasz: " );
    cin >> ileliczb;
    if( ileliczb <= 0 ) cout << "Bledna ilosc liczb" << endl;
   
   
} while( ileliczb <= 0 );


i przeanalizuj warunki logiczne.

P-95405
megatron
» 2013-11-05 21:41:50
Może użyj pętli do-while.
Edit.
@up
Zlagowałem ;D
P-95406
BorntobeWild
Temat założony przez niniejszego użytkownika
» 2013-11-05 21:54:52
Dziękuję bardzo za pomoc. Po tych wszystkich poprawkach wszystko jest już jak należy.

Pozdrawiam.
P-95409
« 1 »
  Strona 1 z 1