#include <iostream>
int const maxCyfr = 80;
/*W polu cyfry są zapisane wartości cyfr liczby (0-9), najbardziej znacząca cyfra jest pod indeksem 0, pominuęte zera nieznaczące*/
struct Liczba
{
bool dodatnia;
unsigned char cyfry[maxCyfr];
int liczbacyfr;
};
void wypiszLiczbe(const Liczba* liczba) {
std::cout << "Oto liczba: ";
// jeżeli liczba jest ujemna wypisujemy minus
if (!liczba->dodatnia) {
std::cout << "-";
}
// wypisujemy kolejne cyfry
for (int i=0; i<liczba->liczbacyfr; i++) {
std::cout << liczba->cyfry[i];
}
std::cout << std::endl;
}
bool wczytajLiczbe(Liczba* liczba)
{
int dlugosc;
std::cout << "Podaj cyfre (maksymalnie 80 cyfr): \n";
std::cin >> dlugosc;
//sprawdzamy czy długość jest odpowiednia
if (dlugosc <= 0 || dlugosc > 80)
return false;
//przypisujemy długość do pola liczbacyfr wewnątrz struktury
liczba->liczbacyfr = dlugosc;
for (int i=0; i<dlugosc; i++) {
std::cout << "Podaj kolejna cyfre (maksymalnie 80 cyfr): \n";
//wpisujemy cyfrę do prawidłowego indeksu
std::cin >> liczba->cyfry[i];
}
return true;
}
int main()
{
// tworzymy "pustą" liczbę.
Liczba liczba;
liczba.dodatnia = true;
liczba.liczbacyfr = 0;
if (wczytajLiczbe(&liczba))
wypiszLiczbe(&liczba);
return 0;
}