Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Visual C++] sprawdzenie czy litera czy cyfra

kamil22011 30 Maj 2010 02:23 8043 7
  • #1 30 Maj 2010 02:23
    kamil22011
    Poziom 18  

    Witam,

    Mam problem ze sprawdzeniem czy wczytany znak to litera czy cyfra. W Borland C++ można to było łatwo wykonać na StrToFloatDef() a w Visual C++ nie ma niestety takiej funkcji a nie znalazłem nigdzie na necie opisu jak to zrobić.
    Więc jak to wykonać?

    0 7
  • #3 30 Maj 2010 07:23
    Terminator
    Poziom 23  

    Code:
    #include <iostream>
    

    int main( void )
    {
       char z;
       std::cin>>z;
       if( ((z >= 'a') && (z<='z')) || ((z>='A') && (z<='Z')))
          std::cout<<"znak\n";
       else if ( (z>='0') && (z<='9') )
          std::cout<<"liczba\n";
       return 0;
    }

    0
  • #5 30 Maj 2010 13:05
    kamil22011
    Poziom 18  

    Niestety nie mogę dalej sobie z tym tematem poradzić dlatego opiszę swój problem dokładniej.

    Pracuję na aplikacji okienkowej w VS 2008 na C++. Mam do obliczenia silnię. Wszystko jest jedynie mam kłopot ze zrobieniem zabezpieczenia na wypadek wprowadzania liter i znaków interpunkcyjnych. Muszą być jedynie cyfry a dokładnie liczny całkowite od 0 do 10. Pobieram wprowadzona wartość z textBox1 jako zmienną String ^ z; następnie przetwarzam ją na int poleceniem n=int::Parse(z);

    Jeżeli jednak pojawia się w zmiennej z jakiś znak różny od cyfry to program się wykrzacza. Chciałbym zrobić tak żeby jakoś sprawdzać czy w ciągu wprowadzonych znaków do zmiennej z znajduje się jakaś litera albo znak interpunkcyjny, a jeżeli tak to zwraca jakąś wartość, jeżeli nie to wykonuje się program dalej. Zamieszczam kod który siedzi w przycisku mojego programu.




    Code:
    String ^ z;
    
    z=textBox1->Text;
    int n, s , wynik;

                
    if (isalnum(z))
       {
          textBox3->Text="Wprowadzono znak";
       }
    else
       {
          n=int::Parse(z);
          if (n<0)
             {
                textBox3->Text="Wprowadzono wartość niższą niż 0";
             }
          else if (n>10)
             {
                textBox3->Text="Wprowadzono wartość większą niż 10";
             }
          else
             {
                switch (n)
                   {
                      case 0:
                         wynik= 1;
                         break;
                      case 1:
                         wynik= 1;
                         break;
                           default:
                         wynik= 1;
                         while (n>1)
                            {
                               s= n * (n-1);
                               wynik= s*wynik;
                               n=n-2;
                            }
                         break;
                   }
                textBox2->Text=wynik.ToString();
                textBox3->Text="";
             }
       }


    Wiem że w pierwszym if(isalnum(z)) jest błąd ale właśnie chciałbym żeby jakoś sprawdzać ten warunek w taki sposób, to znaczy czy ciąg znaków zawiera same cyfry i wtedy wykonuje się program a jeżeli nie to else. Teraz oczywiście jest odwrotnie ale tylko po to by zrozumieć sposób.

    Proszę pamiętać o używaniu znaczników code. - arnoldziq

    0
  • #6 30 Maj 2010 17:16
    Terminator
    Poziom 23  

    Pisz od razu,że robisz aplikacje CLR (Windows Form Application) bo powyższe rozwiązania są poprawne dla C++ a my się dziwimy dlaczego Ci nie pasują ...

    0
  • #7 30 Maj 2010 19:23
    kamil22011
    Poziom 18  

    Przepraszam ale jestem początkujący w programowaniu obiektowym i nie wiedziałem że to istotne. Czy da się to jakoś wykonać w sposób który opisałem wyżej??

    0
  • #8 31 Maj 2010 21:35
    kamil22011
    Poziom 18  

    Czy jest możliwe żeby mi pomóc w tym temacie??

    0