Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.87 KB | None | 0 0
  1. // Zad.9.cpp : Defines the entry point for the console application.
  2. //Dekompozycja liczb.
  3.  
  4. #include "stdafx.h"
  5. #include "../../../../std_lib_facilities.h"
  6.  
  7. struct Numbers
  8. {
  9.    int thousands;
  10.    int hundreds;
  11.    int dozens;
  12.    int unity;
  13.  
  14.    Numbers()
  15.       :thousands(0),hundreds(0),
  16.        dozens(0),unity(0){}
  17.  
  18.    void set_vector(char number);
  19.    void set_number(vector<char> num);
  20.    int value();
  21. };
  22.  
  23. Numbers n;
  24. vector<char> numbers;
  25.  
  26. int main()
  27. {
  28.    cout << "Podaj liczbe z zakresu 1-9999 i zakoncz srednikiem" << endl;
  29.    char number = '0';
  30.    n.set_vector(number);
  31.    n.set_number(numbers);
  32.    int num = n.value();
  33.    cout << "\nDekompozycja liczby: " << num
  34.       << "\nLiczba tysiecy: " << n.thousands
  35.       << "\nLiczba setek: " << n.hundreds
  36.       << "\nLiczba dziesiatek: " << n.dozens
  37.       << "\nLiczba jednosci: " << n.unity << endl;
  38.    return 0;
  39. }
  40.  
  41. void Numbers::set_vector(char number)
  42. {
  43.    while (cin >> number && number != ';') {
  44.      if (number > '0' && number < '9')
  45.          numbers.push_back(number);
  46.      else
  47.          cerr << "Blad '" << number << "' nie jest liczba" << endl;
  48.    }
  49. }
  50.  
  51.  
  52. void Numbers::set_number(vector<char> num)
  53. {
  54.    switch (num.size()) {
  55.    case 1:
  56.       n.unity = num.at(0) - '0';
  57.       break;
  58.    case 2:
  59.       n.dozens = num.at(0) - '0';
  60.       n.unity = num.at(1) - '0';
  61.       break;
  62.    case 3:
  63.       n.hundreds = num.at(0) - '0';
  64.       n.dozens = num.at(1) - '0';
  65.       n.unity = num.at(2) - '0';
  66.       break;
  67.    case 4:
  68.       n.thousands = num.at(0) - '0';
  69.       n.hundreds = num.at(1) - '0';
  70.       n.dozens = num.at(2) - '0';
  71.       n.unity = num.at(3) - '0';
  72.       break;
  73.    default:
  74.       cerr << "Blad, maksymalna liczba to 9999" << endl;
  75.       abort();
  76.    }
  77. }
  78.  
  79. int Numbers::value()
  80. {
  81.    int v = 0;
  82.    v = n.thousands * 1000 + n.hundreds * 100 + n.dozens * 10 + n.unity;
  83.    return v;
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement