zapis wyciągniętych cyfr z liczby do łańucha znaków

0

Witam,
jako początkujący proszę o pomoc w naprowadzeniu na rozwiązanie zadania, w którym wpisuję 11-cyfrową liczbę, następnie mam z niej wyciągnąć po kolei wszystkie cyfry i zapisać je do ciągu znaków.
U mnie kompiluje się tak:
12345678912
219876543211
1
1
1
1
1
1
1
1
1
1

#include <iostream>

using namespace std;

int main()
{
long long liczba;
cin>>liczba;
int pesel[11];

for (long long j=1; j<=10000000000; j=j*10)
{
cout<<liczba/j%10;

    for (int i=10; i>=0; i--)
    {
    pesel[i]=liczba/j%10;
    }
}

for (int i=0; i<11; i++)
{
    cout<<pesel[i]<<endl;
}

return 0;

}

0

Zastanowiłeś się co robi kod

for (long long j=1; j<=10000000000; j=j*10)
{
cout<<liczba/j%10;

    for (int i=10; i>=0; i--)
    {
    pesel[i]=liczba/j%10;
    }
}

?

Dla każdej z liczb 10^i, w jakiś sposób wypełniasz tablicę pesel - całą! Co więcej, wypełniasz ją tą samą jedną cyfrą (bo wartość wyrażenia liczba/j%10 nie zależy od i).

0

To wiem co robi pętla - wypełnia tablicę pesel tą samą cyfrą, tylko nie mam pojęcia jak wypełnić ją tymi kolejno wyciągniętymi liczbami??

1

Pętla j jest kompletnie niepotrzebna. W każdej iteracji i zapisuj do tablicy liczba % 10 i dziel ja przez 10

0

for (int i=10; i>=0; i--)
{
pesel[i]=liczba/10%10;
}
for (int i=0; i<11; i++)
{
cout<<pesel[i];
}

Nie wiem gdzie robię błąd, ale nadal nie mam pożądanego efektu :/ Pokażecie początkującemu jak byście to zrobili?

1

Ja bym to napisał tak:

while(liczba) {cyfra[i] = liczba%10; liczba /= 10;}
for (int i = 10; i >= 0; i--) cout << cyfra[i];
0

Dzięki wielkie Enedil, sporo mnie naprowadziłeś. Dostosowałem to do swojego zadania i działa!

0
#include <iostream>
#include <string>
 
int main() {
	unsigned long number;
	std::cin >> number;
 
	std::string digits = std::to_string(number);
	for (auto c : digits)
		std::cout << c << " ";
 
	return 0;
}
0

bardziej jako dowcip pokazujący absurdalność zadania:

#include <iostream>
#include <iterator>
#include <algorithm>

int main() {
    std::string s;

    while (std::cin >> s) {
         std::ostream_iterator<char> out_it { std::cout,"\n" };
         std::copy(s.begin(), s.end(), out_it);
         std::cout << '\n';
    }
    std::cout << std::flush;

    return 0;
}

https://wandbox.org/permlink/ZFe4WCWBiYrV7JBf

1 użytkowników online, w tym zalogowanych: 0, gości: 1