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.

[c++] Jak odróżnić liczby od znaków?

karolfry 02 Lis 2010 21:36 4161 11
  • #1 02 Lis 2010 21:36
    karolfry
    Poziom 8  

    Witam!
    Mam pytanie jak w temacie, czyli jak sprawdzić czy wprowadzona z klawiatury wartość jest liczbą czy jakimś innym znakiem, lub ciągiem znaków?
    Pozdrawiam.

    0 11
  • #2 02 Lis 2010 21:57
    1545561
    Użytkownik usunął konto  
  • #3 02 Lis 2010 22:01
    karolfry
    Poziom 8  

    Sposób na sprawdzenie czy wprowadzony znak jest liczbą czy literą czy jeszcze jakimś innym znakiem istnieje na 100% bo już kiedyś się na niego natknąłem, tylko że teraz nie mogę go odnaleźć.

    0
  • #4 02 Lis 2010 22:10
    Matejkos
    Poziom 20  

    No przecież można z czytywać kolejne znaki z bufora i sprawdzać czy char ma wartość z przedziału 48 do 57 bodajże dla pewności sprawdź w tablicy ascii jeżeli jest w tym przedziale to cyfra a jeżeli nie to inny znak

    choć nie wiem czy o to Ci chodzi

    0
  • #5 02 Lis 2010 22:16
    karolfry
    Poziom 8  

    O to mi właśnie chodzi, tyle że z tego co pamiętam to przed porównaniem trzeba było dokonać rzutowania z char na int.

    0
  • #6 02 Lis 2010 22:20
    przemo_wielki
    Poziom 23  

    Myślę że najłatwiej sprawdzić to kompilując program.

    -1
  • #7 03 Lis 2010 07:46
    walek33
    Poziom 28  

    Mało piszę w C++ ale wydaje mi się (99%), że i w tym języku jest taki twór jak IsNumeric() ewentualnie IsDigit(). W Googlach znajdziesz więcej info. :cry:

    0
  • #8 03 Lis 2010 13:21
    karolfry
    Poziom 8  

    Problem z rozpoznawaniem mam już rozwiązany ale jest jeszcze jedna sprawa, czy mógł by mi ktoś jasno wytłumaczyć jak przekonwertować wartość którą wprowadziłem z klawiatury do stringa (np. 9.56) na float?

    0
  • #9 03 Lis 2010 13:40
    1545561
    Użytkownik usunął konto  
  • #10 03 Lis 2010 15:05
    several
    Poziom 15  

    karolfry napisał:
    jak przekonwertować wartość którą wprowadziłem z klawiatury do stringa (np. 9.56) na float?

    Na każdym forum dotyczącym programowania to pytanie pada średnio raz w tygodniu. A nie możesz od razu wprowadzać wartości do float'a? A odpowiedzią na pytanie z tematu jest funkcja isdigit()

    0
  • Pomocny post
    #11 03 Lis 2010 15:10
    Dariusz Bismor
    Poziom 17  

    Zagadnienie, o które pytasz, nazywa się formatowaniem wewnętrznym.

    Code:
    string pi_string("3.1415926");
    
    istringstream we(pi_string);
    float pi;

    we >> pi;
    if( we ){
      cout << "Konwersja poprawna, pi = " << pi << endl;
    }else{
      cout << "Błąd konwersji!" << endl;
    }

    HTH,
    Dariusz

    0
  • #12 03 Lis 2010 16:38
    karolfry
    Poziom 8  

    Code:
    #include <cstdlib>
    
    #include <iostream>
    #include <string>
    #include <conio.h>
    using namespace std;

    int main(int argc, char *argv[])
    {
        string a;
        int n;
        int c = 46;
        int d = 45;
        cin>>a;
       
        n = a.size();
     
        for (n;n-1>=0;n--)
         {
         if(!(a[n-1]>=48 && a[n-1]<=57 || a[0] == d || a[n-1] == c ))
              {
             
              cout<<"to nie jest liczba";
              getch();
              return 0;
              }
         if (a[0]==d) d=48;
         if (a[n-1]==c) c=48;
         }
         cout << "to jest liczba";
        getch ();
    return 0;
    }

    Program rozpoznaje liczby dodatnie i ujemne, całkowite i ułamki.

    Dodano po 1 [godziny] 15 [minuty]:

    several:
    Nie mogę od razu wprowadzić wartości do float'a, ponieważ najpierw sprawdzam czy została wprowadzona poprawna wartość żeby program się nie wysypał.

    Dariusz Bismor:
    O to mi właśnie chodziło, bardzo dziękuje za pomoc.

    0