C++ Czytanie liczby cyfra po cyfrze

0

Potrzebuję formuły, która przy podawaniu liczby do standardowego wejścia będzie sczytywała ją cyfra po cyfrze i zapisze np. do tablicy int. Liczba nie może być czytana najpierw do zmiennej i potem z niej zapisywana do tablicy, bo żaden typ danych nie pomieści takiej liczby (np. 999999999999999999999999999999). Jak mogę coś takiego zrobić?

2

Wczytać od razu do stringa, albo jako char. Potem elementu stringa/tablicy odejmujesz '0' (bo znak to tak w zasadzie kod w ascii, więc można na nich przeprowadzać te same operacje co na niedużych unisgned intach) i dostaniesz cyfrę. Od razu przy wczytywaniu też oczywiście możesz, zależy do czego to wszystko miało by służyć.

0

To musi być coś, z czego mogę potem czytać cyfrę po cyfrze, żeby wrzucić je na stos. Inaczej mówiąc, muszę wczytać liczbę, którą zapiszę jako stos jej cyfr. Zakładam też, że nie znam ilości cyfr danej liczby. Najlepiej, jakby było coś w tym stylu:

while(tutaj wczytywanie cyfra po cyfrze){
   a.push(cyfra);
} 
2
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
#include <string>
using namespace std;

int main(){
	string str;
	cin >> str;
	vector<int> digits(str.size());
	transform(
		begin(str), 
		end(str), 
		begin(digits), 
		[](auto x){ return x-'0'; }
	);
	copy(
		begin(digits), 
		end(digits), 
		ostream_iterator<decltype(digits)::value_type>(cout)
	);
	return 0;
}
1
std::string liczba;
std::cin >> liczba;
for (char c : liczba)
    a.push(c - '0');
0
twonek napisał(a):
std::string liczba;
std::cin >> liczba;
for (char c : liczba)
    a.push(c - '0');

Dostaję "range-based 'for' loops are not allowed in C++98 mode"

1
for (size_t i = 0; i < liczba.length(); ++i)
    a.push(liczba[i] - '0');
0

Użyć albo gnu gmp, albo innej biblioteki obsługującej duże liczby.

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