logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak wyodrębnić konkretną cyfrę z liczby w C++?

kreda1 23 Wrz 2006 19:59 7073 5
REKLAMA
  • #1 3049810
    kreda1
    Poziom 11  
    Posty: 14
    Witam,
    Czy jest jakis sposob zeby otrzymac wybrana cyfre z danej liczby? N.p. z liczby 1337 cyfre jednosci albo dziesiatek?
    (P.S. sorry ale nie mam polskich fontow:))

    Moderowany przez MirekCz:

    Przeniesione z Programowanie ogólne.
    Na przyszłość proszę takie banalne pytania zadawać w dziale dla początkujących.

  • REKLAMA
  • #2 3049934
    MirekCz
    Poziom 35  
    Posty: 2220
    Pomógł: 330
    Ocena: 62
    Można to zrobić w prosty sposób wykorzystując resztę z dzielenia przez 10.

    Przykład:
    
    liczba i=123;
    chcemy cyfrę jedności to robimy
    i=i%10; (% oznacza resztę z dzielenia)
    chcemy cyfrę dziesiątek to robimy:
    i=(i/10)%10;
    i analogicznie cyfra setek to 
    i=(i/100)%10;
    
  • REKLAMA
  • #3 3049976
    Arek313
    Poziom 12  
    Posty: 16
    Pomógł: 2
    nie znam mozliwosci c++ ani nie jestem ekspertem w algorytmach ale sprobowalbym tak:

    Zeby dostac np cyfre setek to podzielilbym liczbe przez 100, czyli wyszlo by 13,37. Pamietam cos, ze jedna z funkcji zwraca czesc calkowita a druga ulamkowa, otrzymalbym zatem 13. a potem jeszcze raz przez 10 ale uzywajac tej drugiej funkcji. wyszlo by wtedy chyba 0.3. Pomnozysz z powrotem przez 10 i masz 3.

    Mozna tez zobaczyc czy w c++ nie da sie tego zamienic latwo na string i po prostu pobrac okreslona pozycje stringu.
  • REKLAMA
  • #4 3049997
    adjar
    Poziom 24  
    Posty: 629
    Pomógł: 58
    Ocena: 43
    Ewentualnie zamienic liczbe na tekst (jest do tego jakas funkcja biblioteczna, nie pamietam jej teraz bo dawno sie tym bawilem, ale znajdziesz sobie bez problemu w manualu), wpisac do tablicy i juz swobodnie czytac poszczegolne cyferki.
  • REKLAMA
  • #5 3051045
    ed-ek
    Poziom 34  
    Posty: 1814
    Pomógł: 275
    Ocena: 42
    Można to zrobić jak przedstawiam. Masz możliwości do wyboru. Jeżeli zastosujesz for,możesz wydzielić kilka cyfr. Skompilowano pod Dev-C++
    Numeracja cyfr zaczyna się od 0.

    #include <conio.h>
    #include <iostream>
    using namespace std;
    int main()
    {
    int n,n1,ktora;
    char *str = "12345";
    char bufor[50];

    cout<<"podaj liczbe ";cin>>n1; //podajesz integer
    itoa(n1,bufor,10);//zamiana liczby n1 na char,tu niepotrzebne
    //ale dla przykładu
    n = atoi(str); //zamiana char "12345" na integer
    cout<<"string= "<<str<<endl; //wypisanie 12345 jako char
    cout<<"integer= "<<n<<endl; //wypisanie 12345 jako integer
    cout<<"podaj ktora z kolei cyfre z liczb chcesz odczytac "<<endl;
    cin>>ktora;
    cout<<str[ktora]<<endl;
    cout<<bufor[ktora];
    getch();
    }
  • #6 3051425
    MacGyver 7
    Poziom 21  
    Posty: 417
    Pomógł: 37
    Ocena: 41
    Zamień to na BCD i będzie po kłopocie. będziesz miał dostęp do wszystkich cyfr od ręki. Masz tu kod na pięciocyfrowe liczby BCD.

    int m[5], i, L = 10000;
    for (i = 0; i < 5; ++i)
    {
    m[i]=m[5] / L;
    m[5] = m[5] % L;
    L=L/10;
    }

    m[5] to podawana liczba, m[0] do m[4] to poszczególne cyfry dziesiętne.
REKLAMA