Προς το περιεχόμενο

C++ (cin)


babel47

Προτεινόμενες αναρτήσεις

  • Απαντ. 38
  • Δημ.
  • Τελ. απάντηση
Δημοσ.
αν θες μεχρι 8 ψηφια οπως λες δηλωσε μια μεταβλητη max=99999999 και καθε cin που θα βαζεις καντου εναν ελεχο με τη μαξ , αν ειναι μικροτερος αστον να περναει αλιως βαλτο ν εμφανηζει μνμ λαθους

 

πχ

 

cin>>a;

 

if (a<max)

{

cout<<"--------------------------------------------\n";

}

else

{

cout<<"--------------------------\n";

 

 

}

 

Το εχω κανει και αυτο δεν αλλαζει κατι ετσι το προβλημα παραμενει καθως ειναι προβλημα της cin

Δημοσ.
αν θες μεχρι 8 ψηφια οπως λες δηλωσε μια μεταβλητη max=99999999 και καθε cin που θα βαζεις καντου εναν ελεχο με τη μαξ , αν ειναι μικροτερος αστον να περναει αλιως βαλτο ν εμφανηζει μνμ λαθους

 

πχ

 

cin>>a;

 

if (a<max)

{

cout<<"--------------------------------------------\n";

}

else

{

cout<<"--------------------------\n";

 

 

}

 

Το εχω κανει και αυτο δεν αλλαζει κατι ετσι το προβλημα παραμενει καθως ειναι προβλημα της cin

Δημοσ.

Όπως λέει ο GrandGamer, το να το πάρεις ως string και να το μετατρέψεις μετά σε ό,τι θες, είναι μια καλή λύση με την έννοια του ότι μπορεί να είναι πολύ κουραστικό, αλλά σου επιτρέπει να ελέγχεις εισόδους σε διάφορες μορφές.

Δημοσ.

Όπως λέει ο GrandGamer, το να το πάρεις ως string και να το μετατρέψεις μετά σε ό,τι θες, είναι μια καλή λύση με την έννοια του ότι μπορεί να είναι πολύ κουραστικό, αλλά σου επιτρέπει να ελέγχεις εισόδους σε διάφορες μορφές.

Δημοσ.
Θα μπορούσες να κάνεις ένα array από char το οποίο θα έχει 8 θέσεις και έτσι θα έχεις συγκεκριμένα μέχρι και 8 ψηφία κωδικό.

 

οποτε προτεινεις να διαβαζω ενα ενα χαρακτηρα με την get

πχ while(cin.get() != EOF || count <= 8) { ....... }

 

αν ξερει κανεις αλλο τροπο ας τον πει και εγω αυτο εχω σκεφτει εως τωρα

 

 

-----Προστέθηκε 29/1/2009 στις 02 : 38 : 06-----

 

 

Εστω οτι το διαβαζω με την getline απο την κλαση string ομως getline(cin,str) μετα πως μετατρεπω το string τυπο σε int για παραδειγμα?

 

Και μια αλλη ερωτηση αν θελω σε ένα cin να αποφυγω το κενο πως θα μπορουσα να το κανω με την cin.ignore()? Πχ πως θα μπορουσε να γινει στον παρακατω κωδικα?

 

char* a;

cout << "dose string\n";

cin >> a;

Δημοσ.
Θα μπορούσες να κάνεις ένα array από char το οποίο θα έχει 8 θέσεις και έτσι θα έχεις συγκεκριμένα μέχρι και 8 ψηφία κωδικό.

 

οποτε προτεινεις να διαβαζω ενα ενα χαρακτηρα με την get

πχ while(cin.get() != EOF || count <= 8) { ....... }

 

αν ξερει κανεις αλλο τροπο ας τον πει και εγω αυτο εχω σκεφτει εως τωρα

 

 

-----Προστέθηκε 29/1/2009 στις 02 : 38 : 06-----

 

 

Εστω οτι το διαβαζω με την getline απο την κλαση string ομως getline(cin,str) μετα πως μετατρεπω το string τυπο σε int για παραδειγμα?

 

Και μια αλλη ερωτηση αν θελω σε ένα cin να αποφυγω το κενο πως θα μπορουσα να το κανω με την cin.ignore()? Πχ πως θα μπορουσε να γινει στον παρακατω κωδικα?

 

char* a;

cout << "dose string\n";

cin >> a;

Δημοσ.

char array-> int

>int _tmain(int argc, _TCHAR* argv[])
{
char a[]={'1','4','7'};
int i=(a[2]-48)*1  +(a[1]-48)*10 + (a[0]-48)*100;

printf("%d",i);
getchar();
return 0;
}

παντος δουλευει, επησεις μπορεις να κανεις και ελενχο εαν ειναι αρηθμος (if(a[x]<(48+10)&&a[x]>48) )

Δημοσ.

char array-> int

>int _tmain(int argc, _TCHAR* argv[])
{
char a[]={'1','4','7'};
int i=(a[2]-48)*1  +(a[1]-48)*10 + (a[0]-48)*100;

printf("%d",i);
getchar();
return 0;
}

παντος δουλευει, επησεις μπορεις να κανεις και ελενχο εαν ειναι αρηθμος (if(a[x]<(48+10)&&a[x]>48) )

Δημοσ.

Δεν ξέρω πως ακριβως γίνεται στη C++, αλλά με την χρήση exceptions... πιστευω ότι θα είσουν καλυμμένη .

Δημοσ.

Δεν ξέρω πως ακριβως γίνεται στη C++, αλλά με την χρήση exceptions... πιστευω ότι θα είσουν καλυμμένη .

Δημοσ.
αν θες μεχρι 8 ψηφια οπως λες δηλωσε μια μεταβλητη max=99999999 και καθε cin που θα βαζεις καντου εναν ελεχο με τη μαξ , αν ειναι μικροτερος αστον να περναει αλιως βαλτο ν εμφανηζει μνμ λαθους

πχ

cin>>a;

...

Το πρόβλημα είναι στην αποθήκευση της τιμής στο a

Μια λύση είναι αυτή που λέει ο teo64x

 

Όπως λέει ο GrandGamer, το να το πάρεις ως string και να το μετατρέψεις μετά σε ό,τι θες, είναι μια καλή λύση με την έννοια του ότι μπορεί να είναι πολύ κουραστικό, αλλά σου επιτρέπει να ελέγχεις εισόδους σε διάφορες μορφές.

 

Μια άλλη είναι να φτιάξεις errorhandler που να επιστρέφει σε περίπτωση τέτοιου σφάλματος την ροή στη σωστή θέση (και να διορθώνει το πρόβλημα)

Προτείνω να δουλέψεις με στρινγκ.

Δημοσ.
αν θες μεχρι 8 ψηφια οπως λες δηλωσε μια μεταβλητη max=99999999 και καθε cin που θα βαζεις καντου εναν ελεχο με τη μαξ , αν ειναι μικροτερος αστον να περναει αλιως βαλτο ν εμφανηζει μνμ λαθους

πχ

cin>>a;

...

Το πρόβλημα είναι στην αποθήκευση της τιμής στο a

Μια λύση είναι αυτή που λέει ο teo64x

 

Όπως λέει ο GrandGamer, το να το πάρεις ως string και να το μετατρέψεις μετά σε ό,τι θες, είναι μια καλή λύση με την έννοια του ότι μπορεί να είναι πολύ κουραστικό, αλλά σου επιτρέπει να ελέγχεις εισόδους σε διάφορες μορφές.

 

Μια άλλη είναι να φτιάξεις errorhandler που να επιστρέφει σε περίπτωση τέτοιου σφάλματος την ροή στη σωστή θέση (και να διορθώνει το πρόβλημα)

Προτείνω να δουλέψεις με στρινγκ.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...