Πώς να ελέγχω αν μια εισαγωγή αριθμού είναι χαρακτήρας;

Συζητήσεις για την γλώσσα C και C++

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
terminatorvasilis
Δημοσιεύσεις: 13
Εγγραφή: 22 Ιουν 2010 01:22

Πώς να ελέγχω αν μια εισαγωγή αριθμού είναι χαρακτήρας;

Δημοσίευση από terminatorvasilis » 22 Σεπ 2010 15:55

Γειά σας!Έχω ένα πρόβλημα.Έφτιαξα ενα προγραμματάκι σε c++ που διαβάζει 5 αριθμούς απο το χρήστη και τους αποθηκεύει σε έναν πίνακα ακεραίων.Θέλω να κάνω έναν έλεγχο ώστε αν ο χρήστης εισάγει χαρακτήρα να τον ειδοποιεί να ξαναεισάγει αριθμό.

Σας παραθέτω το κομμάτι του κώδικα:

Κώδικας: Επιλογή όλων

 for&#40;i=0; i<5; i++&#41;
          &#123;
               cout<<"Dose ari8mo\n";
               cin>>A&#91;i&#93;;
               while&#40;isalpha&#40;A&#91;i&#93;&#41;
              &#123;
                    cout<<"Dose ari8mo kai oxi xarakthra\n";
                   cin>>A&#91;i&#93;;
              &#125;
          &#125;


Φυσικά για να χρησιμοποιήσω τη συνάρτηση isalpha πρόσθεσα header file #include <cctype>
Όταν το τρέχω στο cmd και εισάγω χαρακτήρα,μου εμφανίζει ένα κατεβατό απο "Dose ari8mo kai oxi xarakthra".Ευχαριστώ εκ των προτέρων!

papi1
Δημοσιεύσεις: 8
Εγγραφή: 01 Φεβ 2009 12:58

Πώς να ελέγχω αν μια εισαγωγή αριθμού είναι χαρακτήρας;

Δημοσίευση από papi1 » 22 Σεπ 2010 22:20

Υπαρχει και το isdigit,με το οποιο μπορεις να κανεις κατα σα το παρακατω.

Κώδικας: Επιλογή όλων

#include <iostream>
//cout,cin
#include <string>
//string,endl
#include <locale>
//isdigit
using namespace std;

bool IsNumber&#40;string &s&#41;
&#123;
	bool result = true;
	auto first = s.begin&#40;&#41;;
	auto last  = s.end&#40;&#41;;
	for&#40;;first!=last;++first&#41;
		if&#40;!isdigit&#40;*first&#41;&#41;
			result = false;
	return result;
&#125;
int main&#40;void&#41; 
&#123;
	string str = "Not a number";
	
	while&#40;!IsNumber&#40;str&#41;&#41;
	&#123;
		cout<<"insert a number&#58;";
		cin>>str;
		cout<<endl;
	&#125;
	cout<<"ty"<<endl;
	
	return 0;
&#125;

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

Πώς να ελέγχω αν μια εισαγωγή αριθμού είναι χαρακτήρας;

Δημοσίευση από virxen75 » 24 Σεπ 2010 00:33

μπορεί να γίνει και έτσι

Κώδικας: Επιλογή όλων

#include <iostream>
#include <string>
#include <cctype>

using namespace std;
int main&#40;&#41;&#123;
    int A&#91;5&#93;,i=0,j=0;
    
    char AA&#91;100&#93;;
    for&#40;i=0; i<5; i++&#41;&#123;
        bool isNumber=false;
        while&#40;!isNumber&#41;&#123;
            isNumber=true;
            cout<<"\nDose ari8mo No "<<i+1<<"&#58;";
            cin>>AA;
            for &#40;j=0;j<strlen&#40;AA&#41;;j++&#41;&#123;
                if &#40;isalpha&#40;AA&#91;j&#93;&#41;&#41;&#123;
                 isNumber=false;
                 break;
                &#125;
            &#125;
        &#125;
        A&#91;i&#93;=atoi&#40;AA&#41;;
        cout<<"number entered is&#58;"<<A&#91;i&#93;;
    &#125; 
    getchar&#40;&#41;;getchar&#40;&#41;;
    return 0;
&#125;
τρόποι πολλοί διάλεξε ότι σε εξυπηρετεί και καταλαβαίνεις καλύτερα.

Απάντηση

Επιστροφή στο “C, C++”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες