Advertisement
wohyperion

Односвязный динамический список. Поиск красивых чисел

Sep 24th, 2016
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <clocale>
  3. #include <cstdlib>
  4. #include <ctime>
  5.  
  6. using namespace std;
  7.  
  8. struct list // структура реализующая односвязный динамический список
  9. {
  10.     int number;
  11.     list *link;
  12. };
  13.  
  14. void output_on_display(list *top)
  15. {
  16.     list *work = top;
  17.     cout << "Итоговый односвязный динамический список: ";
  18.     while (work != NULL)
  19.     {
  20.         cout << work->number << ' ';
  21.         work = work->link;
  22.     }
  23.     cout << endl;
  24. }
  25.  
  26. int figures(int number) // количество цифр в числе
  27. {
  28.     int count = 0;
  29.     while (number != 0)
  30.     {
  31.         count++;
  32.         number /= 10;
  33.     }
  34.     return count;
  35. }
  36.  
  37. int random_number(int bottom_number, int top_number)
  38. {
  39.     return bottom_number + rand() % top_number;
  40. }
  41.  
  42. void beauty_number(list *top) // поиск красивых чисел
  43. {
  44.     list *work = top;
  45.     list *list_newbox;
  46.     while (work != NULL)
  47.     {
  48.         if (work->number % figures(work->number) == 0)
  49.         {
  50.             list_newbox = new list;
  51.             list_newbox->link = work->link;
  52.             work->link = list_newbox;
  53.             list_newbox->number = random_number(1, work->number);
  54.         }
  55.         work = work->link;
  56.     }
  57. }
  58.  
  59. int main() // создание односвязного динамического списка
  60. {
  61.     srand(time(0));
  62.     setlocale(LC_ALL, "russian");
  63.     list *top = NULL, *work;
  64.     int temp;
  65.     cout << "Введите последовательность натуральных чисел (0 - символ конца ввода): ";
  66.     cin >> temp;
  67.     while (temp != 0)
  68.     {
  69.         work = new list;
  70.         work->link = top;
  71.         work->number = temp;
  72.         top = work;
  73.         cin >> temp;
  74.     }
  75.     beauty_number(top);
  76.     output_on_display(top);
  77.     system("pause");
  78.     return 0;
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement