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

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

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

Απάντηση
Άβαταρ μέλους
tattooiv
Δημοσιεύσεις: 104
Εγγραφή: 19 Δεκ 2009 01:00

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

Δημοσίευση από tattooiv » 14 Ιαν 2010 06:48

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

εχω ενα προγραμμα σε 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
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

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

Δημοσίευση από virxen75 » 14 Ιαν 2010 10:22

μπορείς να χρησιμοποιήσεις την 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&#40;char &#91;&#93;&#41;;

bool isNumber&#40;char text&#91;&#93;&#41;&#123;
bool isit=true;
    for&#40;int i=0;i<strlen&#40;text&#41;;i++&#41;&#123;
        if &#40;!isdigit&#40;text&#91;i&#93;&#41;&#41;&#123;
            isit=false;
            break;
        &#125;
    &#125;
return isit;
&#125;

int main &#40;&#41;&#123;
  char str1&#91;&#93;="1g776ad";
  char str2&#91;&#93;="1776d";  
  char str3&#91;&#93;="g1776";  
  char str4&#91;&#93;="1776";  
  cout<<isNumber&#40;str1&#41;<<endl;
  cout<<isNumber&#40;str2&#41;<<endl;
  cout<<isNumber&#40;str3&#41;<<endl;
  cout<<isNumber&#40;str4&#41;<<endl;
  getchar&#40;&#41;;
  return 0;
&#125;

Άβαταρ μέλους
tattooiv
Δημοσιεύσεις: 104
Εγγραφή: 19 Δεκ 2009 01:00

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

Δημοσίευση από tattooiv » 14 Ιαν 2010 10:48

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

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

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

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

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

Δημοσίευση από virxen75 » 14 Ιαν 2010 12:17

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

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

int main &#40;&#41;
&#123;
string a="a123";
string b="123";
string c="123a";
cout<<"a="<<atoi&#40;a.c_str&#40;&#41;&#41;<<endl;
cout<<"b="<<atoi&#40;b.c_str&#40;&#41;&#41;<<endl;
cout<<"c="<<atoi&#40;c.c_str&#40;&#41;&#41;<<endl;
  return 0;
&#125;

Erevis
Δημοσιεύσεις: 56
Εγγραφή: 12 Ιουν 2008 16:31
Τοποθεσία: Χαλάνδρι

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

Δημοσίευση από Erevis » 17 Ιαν 2010 15:19

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

πχ.

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

converter << a;
converter >> x;

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

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

Δημοσίευση από virxen75 » 17 Ιαν 2010 19:32

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

πχ.

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

converter << a;
converter >> x;
μπορείς να αναφέρεις έναν τέτοιο compiler?

Erevis
Δημοσιεύσεις: 56
Εγγραφή: 12 Ιουν 2008 16:31
Τοποθεσία: Χαλάνδρι

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

Δημοσίευση από Erevis » 17 Ιαν 2010 19:36

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

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

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

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

Δημοσίευση από virxen75 » 17 Ιαν 2010 20:49

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

Αν έχω λάθος συμπαθάτε με :P
επειδή κάνω compile εκει ,την δέχεται.

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

Άβαταρ μέλους
tattooiv
Δημοσιεύσεις: 104
Εγγραφή: 19 Δεκ 2009 01:00

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

Δημοσίευση από tattooiv » 17 Ιαν 2010 23:55

τελικα χρησιμοποίησα την 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
Δημοσιεύσεις: 56
Εγγραφή: 12 Ιουν 2008 16:31
Τοποθεσία: Χαλάνδρι

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

Δημοσίευση από Erevis » 18 Ιαν 2010 00:29

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

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

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

Δημοσίευση από virxen75 » 18 Ιαν 2010 10:37

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

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

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

bool isNumber&#40;string&#41;;

int main&#40;&#41;&#123;
    bool isnumber=false;

string s1="-12";
isnumber=isNumber&#40;s1&#41;;
cout<<s1<<" is number?-->"<<isnumber<<endl;

s1="23";
isnumber=isNumber&#40;s1&#41;;
cout<<s1<<" is number?-->"<<isnumber<<endl;

s1="23a23";
isnumber=isNumber&#40;s1&#41;;
cout<<s1<<" is number?-->"<<isnumber<<endl;

s1="a2b3c";
isnumber=isNumber&#40;s1&#41;;
cout<<s1<<" is number?-->"<<isnumber<<endl;

s1="23c";
isnumber=isNumber&#40;s1&#41;;
cout<<s1<<" is number?-->"<<isnumber<<endl;
s1="-";
isnumber=isNumber&#40;s1&#41;;
cout<<s1<<" is number?-->"<<isnumber<<endl;
s1="-23a";
isnumber=isNumber&#40;s1&#41;;
cout<<s1<<" is number?-->"<<isnumber<<endl;
getchar&#40;&#41;;getchar&#40;&#41;;
	return 0;
&#125;

bool isNumber&#40;string s&#41;&#123;
bool ok=true;
int posa=s.length&#40;&#41;;
if &#40;posa<1&#41; return false;
for &#40; int pos = 0; pos < posa;pos++ &#41;&#123;
	if&#40;int&#40;s&#91;pos&#93;&#41;<'1' || int&#40;s&#91;pos&#93;>'9'&#41;&#41; &#123;
        ok=false;
        if &#40;s&#91;pos&#93;=='-' && posa>1 && pos==0&#41; ok=true;
        if &#40;!ok&#41; break;
	&#125;
&#125;
return ok;
&#125;
μία δεύτερη

αν έχω το "12α" --->γίνεται 12 (string to int)
οπότε αν το 12---> "12" (int to string)
έλεγχος "12"!="12α"

Απάντηση

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

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

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