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

Problem z biblioteką <cctype> zapytanie odnośnie funkcji " isalpha() "

Ostatnio zmodyfikowano 2015-11-22 21:08
Autor Wiadomość
Rudnicky
Temat założony przez niniejszego użytkownika
Problem z biblioteką <cctype> zapytanie odnośnie funkcji " isalpha() "
» 2015-11-22 20:16:09
Witam,

  Mam zmienną int która ma pobrać od użytkownika liczbę. Chciałbym sprawdzić w if'ie za pomocą funkcji " isalpha()" czy użytkownik podaje liczbę czy też jakiś znak. W momencie w którym podał by znak program powinien się zamknąć. Czy mógłby mi ktoś pomóc proszę? :)

Pozdrawiam.


  
C/C++
#include <iostream>
#include <string>
#include <cctype>

using namespace std;

struct sponsoring
{
    string nazwisko;
    long double kwota;
};

int main()
{
    int liczba_osob;
    int i = 0;
   
    cout << "Ilu osob wplaca?";
    cin >> liczba_osob;
   
    if( isalpha( liczba_osob ) ) // <--- dokladnie o to miejsce mi chodzi.
    {
        cout << "Zle";
    }
   
    sponsoring * ptr = new sponsoring[ liczba_osob ];
   
    cout << "Podaj dane: \n";
   
    for( i = 0; i < liczba_osob; i++ )
    {
        cout << "_______________________________\n";
        cout << "Podaj " << i + 1 << " nazwisko: ";
        cin >> ptr[ i ].nazwisko;
        cout << "Podaj " << i + 1 << " kwote: ";
        cin >> ptr[ i ].kwota;
    }
   
    cout << "\n\n";
   
    for( i = 0; i < liczba_osob; i++ )
    {
        cout << "\tnazwisko: " << ptr[ i ].nazwisko << "  , oraz kwota: " << ptr[ i ].kwota << endl;
    }
   
    cout << "\n\n";
    system( "PAUSE" );
    return 0;
}
P-140605
michal11
» 2015-11-22 20:19:01
W tym przypadku możesz dać na przykład
return 1;
P-140606
carlosmay
» 2015-11-22 20:23:01
C/C++
cin >> liczba_osob;

if( isalpha( liczba_osob ) ) // <--- dokladnie o to miejsce mi chodzi.
{
    cout << "Zle";
}
 Wczytujesz zmienną typu int, więc takie sprawdzanie nie ma sensu.
isalpha() sprawdza znaki typu 'char'.

Ty musisz sprawdzić czy prawidłowo wczytano liczbę.
C/C++
while( !cin >> liczba_osob )
     continue; // oczywiscie pamietamy o czyszczeniu strumienia z nieprawidlowych danych

 
P-140608
Rudnicky
Temat założony przez niniejszego użytkownika
» 2015-11-22 20:23:20
W dalszym ciągu nie wyświetla to komunikatu
cout << "Zle\n";
 <- to było do
return 1
P-140609
carlosmay
» 2015-11-22 20:38:54
Ewentualnie jak chcesz wyjść z programu napisz
C/C++
cout << "Ilu osob wplaca?";
if( !( cin >> liczba_osob ) ) // <--- dokladnie o to miejsce mi chodzi.
{
    cout << "Zle";
    return 1;
   
}

ps. W poprzednim pości też powinny być nawiasy.
P-140611
Rudnicky
Temat założony przez niniejszego użytkownika
» 2015-11-22 21:08:02
Dzięki za odpowiedź carlosmay. Wszystko działa pięknie teraz. Zapamiętam sobie ten sposób na przyszłość. Zamykam temat.

Pozdrawiam
P-140612
« 1 »
  Strona 1 z 1