freestuff.gr αρχική σελίδα
 FAQFAQ    ΑναζήτησηΑναζήτηση   Λίστα ΜελώνΛίστα Μελών   Ομάδες ΜελώνΟμάδες Μελών   <b>Εγγραφή Μέλους</b>Εγγραφή Μέλους 
 ΠροφίλΠροφίλ   Επιλογές μέλους Επιλογές   Τα bookmarks μου Τα bookmarks μου   Προσωπικά μηνύματαΠροσωπικά μηνύματα 
  διαφήμιση  

Καλώς ήρθατε στο forum μας! Για να συμμετάσχετε στις συζητήσεις θα πρέπει να είσαστε μέλος. Γίνετε μέλος τώρα!.

ελεγχος αλφαριθμητικου


 Forum index » Δημιουργία Web Sites, Γραφικών & Προγραμματισμός » Γλώσσες Προγραμματισμού » C, C++
Moderators:  Super-Moderators, WebDev Moderators
Εισαγωγή νέου Θέματος   Απάντηση στο Θέμα Σελίδα 1 από 1 [11 Μηνύματα]      Bookmarks Tags: έλεγχος Mark the topic unread :: Προηγούμενο θέμα :: Επόμενο θέμα
ΑποστολέαςΜήνυμα
tattooiv


Μέλος από: 19 Δεκ 2009
Βοηθήματα: 1
Μηνύματα: 100


View users profile
ΜήνυμαΣτις: 14 Ιαν 2010 06:48    Θέμα: ελεγχος αλφαριθμητικου Απάντηση με παράθεση  Mark this post and the followings unread

καλησπέρα παιδια,
εχω μια μικρή απορία και έχω κολλησει τωρα

εχω ενα προγραμμα σε C++ και σε μία φόρμα έχω ένα editBox στο οποίο θέλω να ελέγχω τι θα βάζει ο χρήστης, θέλω να εμφανίζει μήνυμα οταν εισάγει μεγαλύτερο νούμερο απο όσο είναι το temp(μία μεταβλητη που μετράει το πλήθος σε μία Βάση), το 0 και αν εισάγει αλφαριθμητικό.

τα δύο πρώτα μπορώ να τα ελέγξω, στο αλθαριθμητικό έχω κολλήσει

μπορεί καποιος να με βοηθήσει, σας ευχαριστώ πολύ για τον χρονο σας!!!

το κομματι του κωδικα μου:

int temp;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Text ="SELECT COUNT (code) AS PLITHOS FROM product ";
ADOQuery1->ExecSQL();
ADOQuery1->Active=True;
temp= ADOQuery1->FieldValues["PLITHOS"] ;
if (StrToInt(Edit1->Text) > temp || StrToInt(Edit1->Text)==0)
{
Edit4->Clear();
Edit5->Clear();
MessageBox(NULL,"σφαλμα","λαθος κωδικος", MB_OK);
Edit1->Clear();
}
virxen75


Μέλος από: 18 Φεβ 2009
Μηνύματα: 256+
Περιοχή: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ
View users profile
ΜήνυμαΣτις: 14 Ιαν 2010 10:22    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

μπορείς να χρησιμοποιήσεις την atoi

π.χ.

int i;
i = atoi ("1000"); ---->1000
i = atoi ("10a00"); ---->10
i = atoi ("a1000"); ---->0

ή κάτι τέτοιο π.χ.

κώδικας:

#include <iostream>
#include <ctype.h>
#include <string>
using namespace std;
bool isNumber(char []);

bool isNumber(char text[]){
bool isit=true;
    for(int i=0;i<strlen(text);i++){
        if (!isdigit(text[i])){
            isit=false;
            break;
        }
    }
return isit;
}

int main (){
  char str1[]="1g776ad";
  char str2[]="1776d"; 
  char str3[]="g1776"; 
  char str4[]="1776"; 
  cout<<isNumber(str1)<<endl;
  cout<<isNumber(str2)<<endl;
  cout<<isNumber(str3)<<endl;
  cout<<isNumber(str4)<<endl;
  getchar();
  return 0;
}
tattooiv


Μέλος από: 19 Δεκ 2009
Βοηθήματα: 1
Μηνύματα: 100


View users profile
ΜήνυμαΣτις: 14 Ιαν 2010 10:48    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

ναι εχεις δικιο την atoi μαλλον πρέπει να χρησιμοποιήσω αλλα δεν μπορώ να κανω το AnsiString σε Char

γράφω αυτό
if (StrToInt(Edit1->Text) > temp || StrToInt(Edit1->Text)==0 ||
atoi(Edit1->Text)==0)

αλλα μου εμφανίζει σφάλμα
cannot convert 'AnsiString' to 'const char'
virxen75


Μέλος από: 18 Φεβ 2009
Μηνύματα: 256+
Περιοχή: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ
View users profile
ΜήνυμαΣτις: 14 Ιαν 2010 12:17    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

κώδικας:

#include <iostream>
#include <string>
using namespace std;

int main ()
{
string a="a123";
string b="123";
string c="123a";
cout<<"a="<<atoi(a.c_str())<<endl;
cout<<"b="<<atoi(b.c_str())<<endl;
cout<<"c="<<atoi(c.c_str())<<endl;
  return 0;
}
Erevis


Μέλος από: 12 Ιουν 2008
Μηνύματα: 56
Περιοχή: Χαλάνδρι
View users profile
ΜήνυμαΣτις: 17 Ιαν 2010 15:19    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Η atoi δεν είναι στο στάνταρντ της C++, μερικοί compilers μπορεί να μην την έχουν. Σε αυτή τη περίπτωση μπορείς να χρησιμοποιήσεις stringstream http://www.cplusplus.com/reference/iostream/stringstream/

πχ.

std::string a = "51234";
std::stringstream converter;
int x;

converter << a;
converter >> x;
virxen75


Μέλος από: 18 Φεβ 2009
Μηνύματα: 256+
Περιοχή: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ
View users profile
ΜήνυμαΣτις: 17 Ιαν 2010 19:32    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Erevis ανέφερε:
Η atoi δεν είναι στο στάνταρντ της C++, μερικοί compilers μπορεί να μην την έχουν. Σε αυτή τη περίπτωση μπορείς να χρησιμοποιήσεις stringstream http://www.cplusplus.com/reference/iostream/stringstream/

πχ.

std::string a = "51234";
std::stringstream converter;
int x;

converter << a;
converter >> x;


μπορείς να αναφέρεις έναν τέτοιο compiler?
Erevis


Μέλος από: 12 Ιουν 2008
Μηνύματα: 56
Περιοχή: Χαλάνδρι
View users profile
ΜήνυμαΣτις: 17 Ιαν 2010 19:36    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

O compiler του Dev-C++ αν δεν απατώμαι, πάει κανένας χρόνος βέβαια που χρησιμοποιούσα τον συγκεκριμένο IDE.

Αν έχω λάθος συμπαθάτε με
virxen75


Μέλος από: 18 Φεβ 2009
Μηνύματα: 256+
Περιοχή: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ
View users profile
ΜήνυμαΣτις: 17 Ιαν 2010 20:49    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Erevis ανέφερε:
O compiler του Dev-C++ αν δεν απατώμαι, πάει κανένας χρόνος βέβαια που χρησιμοποιούσα τον συγκεκριμένο IDE.

Αν έχω λάθος συμπαθάτε με


επειδή κάνω compile εκει ,την δέχεται.

Γενικότερα δεν πιστεύω να υπάρχει τέτοιος compiler
tattooiv


Μέλος από: 19 Δεκ 2009
Βοηθήματα: 1
Μηνύματα: 100


View users profile
ΜήνυμαΣτις: 17 Ιαν 2010 23:55    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

τελικα χρησιμοποίησα την atoi και μου δουλευει μια χαρα, οταν βαζω ενα γραμμα μου πεταει μηνυμα σφάλματος, απλα έπρεπε να τα ελέγχω ξεχωριστα δηλαδη

if (StrToInt(Edit1->Text) > temp || StrToInt(Edit1->Text)==0)
{
MessageBox(NULL,"lathos","minima",MB_OK);
}
else if (atoi(Edit1->Text)==0))
{
MessageBox(NULL,"lathos","minima",MB_OK);
}

Αλλα τώρα έχω μια άλλη απορία, μπορώ να ελέγχω το σφάλμα αν στο edit γραψω κατι που αρχίζει με νουμερο και μετα συνεχίζει με γράμμα??? πχ 11h ή 3r5
κατι τέτοιο και παλι να μου εμφανίζει μήνυμα σφάλματος???

εγώ πάντως παιδια χρησιμοποιώ την Borland C++
Erevis


Μέλος από: 12 Ιουν 2008
Μηνύματα: 56
Περιοχή: Χαλάνδρι
View users profile
ΜήνυμαΣτις: 18 Ιαν 2010 00:29    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Το Edit1 απ'οσο μπορώ να καταλάβω πρέπει να είναι κάτι σαν Text Entry GUI control, δεν έχει κάποιο property για να ορίζεις τι χαρακτήρες θα δέχεται?
virxen75


Μέλος από: 18 Φεβ 2009
Μηνύματα: 256+
Περιοχή: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ
View users profile
ΜήνυμαΣτις: 18 Ιαν 2010 10:37    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

μία λύση θα μπορούσε να είναι αυτή(πάντα μιλάμε για ακέραιους)

κώδικας:

#include <iostream>
#include <string>
using namespace std;

bool isNumber(string);

int main(){
    bool isnumber=false;

string s1="-12";
isnumber=isNumber(s1);
cout<<s1<<" is number?-->"<<isnumber<<endl;

s1="23";
isnumber=isNumber(s1);
cout<<s1<<" is number?-->"<<isnumber<<endl;

s1="23a23";
isnumber=isNumber(s1);
cout<<s1<<" is number?-->"<<isnumber<<endl;

s1="a2b3c";
isnumber=isNumber(s1);
cout<<s1<<" is number?-->"<<isnumber<<endl;

s1="23c";
isnumber=isNumber(s1);
cout<<s1<<" is number?-->"<<isnumber<<endl;
s1="-";
isnumber=isNumber(s1);
cout<<s1<<" is number?-->"<<isnumber<<endl;
s1="-23a";
isnumber=isNumber(s1);
cout<<s1<<" is number?-->"<<isnumber<<endl;
getchar();getchar();
   return 0;
}

bool isNumber(string s){
bool ok=true;
int posa=s.length();
if (posa<1) return false;
for ( int pos = 0; pos < posa;pos++ ){
   if(int(s[pos])<'1' || int(s[pos]>'9')) {
        ok=false;
        if (s[pos]=='-' && posa>1 && pos==0) ok=true;
        if (!ok) break;
   }
}
return ok;
}


μία δεύτερη

αν έχω το "12α" --->γίνεται 12 (string to int)
οπότε αν το 12---> "12" (int to string)
έλεγχος "12"!="12α"
Εμφάνιση Μηνυμάτων:   
Εισαγωγή νέου Θέματος   Απάντηση στο Θέμα Σελίδα 1 από 1 [11 Μηνύματα] Mark the topic unread :: Προηγούμενο θέμα :: Επόμενο θέμα
 Forum index » Δημιουργία Web Sites, Γραφικών & Προγραμματισμός » Γλώσσες Προγραμματισμού » C, C++
Τώρα είναι 09 Δεκ 2016 05:50 | All times are UTC + 2


Email This Page to Someone! add to Favorites

     Powered by p h p B B © 2001,2005 p h p B B Group
Για άμεση επικοινωνία με τον διαχειριστή του freestuff.gr στο email: freestuff.gr(παπάκι)gmail.com


Copyright © 1999-2013 Freestuff.gr All Rights Reserved  
Version Aegean, designed by N. Tsaganos