#include // Nem használunk C++ osztályokat, mert még nem tartunk ott az // anyagban :) // Emlékezzünk vissza rá, hogy a vektoroknak fix mérete van a // relációs modellünkben, ezért ilyen a reprezentáció, és ezért // kell kikötéseket tennünk a méretére a programunkban struct termeszetes_vektor { int lob; int hib; unsigned int *val; }; // Ennyi a lényeg, a többi sallang void szamjegyek (unsigned int n, termeszetes_vektor &v) { // Érvényes a vektor? assert (v.lob == 0 && v.hib >= v.lob && v.val); int k; k = v.hib + 1; while (k != v.lob) { v.val[k - 1] = n % 10; n = n / 10; k = k - 1; } // Elég nagy (volt) a vektor? assert (n == 0); } // Innentől gyakorlatilag csak a teszt-framework jön #include unsigned int termeszetes_beolvas () { int n = -1; std::cin >> n; if (n < 0) { std::cerr << "HIBA! Természetes számot adj meg!" << std::endl; exit (1); } return n; } int main (int argc, char **argv) { std::cout << "Decimalis szamjegyekre bontas" << std::endl; std::cout << "A felbontando szam?" << std::endl; const unsigned int n = termeszetes_beolvas (); // A 32 bites, előjel nélküli számnak bőven elég lesz a // 12 decimális jegy termeszetes_vektor v; v.lob = 0; v.hib = 11; v.val = new unsigned int[v.hib - v.lob + 1]; szamjegyek(n, v); // Eredmény kiírása for (int i = v.lob; i <= v.hib; ++i) std::cout << v.val[i] << std::endl; return 0; }