1 / 4
Feb 2015

Witam.
Zaczalem pisac algorytm w C++ majacy za zadanie wybierac kolejno cyfry z jakiejs liczby.
Majac np liczbe 1234 za 1 obiegiem petli chce uzyskac cyfre 1 za 2 obiegiem petli cyfre 2 itd itd.
Problem w tym ze za ktoryms obiegiem petli (zaleznie od podanej liczby) nastepuje dekrementacja liczby i zamist uzyskiwac np 234 uzyskuje 233.
Prosze o pomoc

#include <iostream>
#include <math.h>
using namespace std;
int ile_znakow(int k)
{
    int j=0;
    if(k==0)
        return 1;
    while(k>0)
    {
        k/=10;
        j++;
    }
    return j;
}
int main()
{
    int a,i,x,b;
    cin>>a;
    b=a;
    for(i=0;i<ile_znakow(b);i++)
    {
        x=a/pow(10,ile_znakow(a)-1);
        a-=x*pow(10,ile_znakow(a)-1);
        cout<<"x="<<x<<endl;
        cout<<"a="<<a<<endl;
    }
    return 0;
}

Dlaczego nie zamienisz liczby na stringa? Chcesz uzyskiwać kolejne znaki zaczynając od pierwszego od lewej? Przykład który podales jest dosyc niejasny.

"x" jest szukana cyfra, natomiast "a" dodalem zeby miec mozliwosc sledzenia jak sie liczba zmienia.
wpisujac 1234 chce uzyskac
1
2
3
4
w kolejnych obiegach for'a. Otrzymuje natomiast
1
2
3
3
wpisujac 9157 chce uzyskac
9
1
5
7
otrzymuje natomiast
9
1
5
6
za kazdym razem gdzies gubie jedynke po to miedzy innymi wprowadzilem wyswietlanie "a" zeby wiedziec w ktorym momencie to nastepuje.
Narazie nie uwzglednialem przypadkow w ktorych wystepuje zero np: 1025. Tym zajme sie pozniej.