Quipex

zadanie_8

Dec 9th, 2015
384
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.75 KB | None | 0 0
  1. // zadanie_8.cpp: определяет точку входа для консольного приложения.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <iostream>
  6. #include <ctime>
  7. using namespace std;
  8.  
  9. void fillArr(double* pArr, int sizeOfArr) //Генерация массива из случайных чисел от 1 до 30
  10. {
  11.     srand(time(0));
  12.     for (int i(0); i < sizeOfArr; i++)
  13.     {
  14.         pArr[i] = rand() % 30 + 1;
  15.     }
  16. }
  17.  
  18. void manualFillArr(double* pArr, int sizeOfArr) //Ручной ввод массива
  19. {
  20.     setlocale(0, "rus");
  21.     cout << "Введите элементы массива:\n>>";
  22.     for (int i(0); i < sizeOfArr; i++)
  23.     {
  24.         cin >> pArr[i];
  25.     }
  26.     cout << endl;
  27. }
  28.  
  29. void showArr(double* pArr, int sizeOfArr, int k) //Вывод массива на экран
  30. {
  31.     if (k != 0)
  32.     {
  33.         for (int i(0); i < sizeOfArr; i++)
  34.         {
  35.             cout << pArr[i] << ' ';
  36.         }
  37.         cout << endl;
  38.     }
  39.     if (k == 1)
  40.     {
  41.         cout << "Массив создан автоматически." << endl;
  42.     }
  43. }
  44.  
  45. int posMaxNumArr(double* pArr, int sizeOfArr) //Находим макс значение, возвращаем позицию числа.
  46. {
  47.     double Max = pArr[0];
  48.     int pos = 0;
  49.     for (int i(1); i < sizeOfArr; i++)
  50.     {
  51.         if (Max < pArr[i])
  52.         {
  53.             Max = pArr[i];
  54.             pos = i;
  55.         }
  56.     }
  57.     cout << "Max = " << Max << ", position = " << (pos+1) << endl;
  58.     return pos;
  59. }
  60.  
  61. void sortAfterMax(double* pArr, int sizeOfArr)
  62. {
  63.     int pos = posMaxNumArr(pArr, sizeOfArr);
  64.     if ((pos != sizeOfArr)||( (pos+1) != sizeOfArr)) //Если Мах в конце, или предпоследний, делать ничего не нужно :р
  65.     {
  66.         double temp;
  67.         for (int i(pos + 1); i < sizeOfArr; i++)
  68.         {
  69.             for (int j(i + 1); j < sizeOfArr; j++)
  70.             {
  71.                 if (pArr[i] > pArr[j])
  72.                 {
  73.                     temp = pArr[i];
  74.                     pArr[i] = pArr[j];
  75.                     pArr[j] = temp;
  76.                 }
  77.             }
  78.         }
  79.     }
  80. }
  81.  
  82. int main()
  83. {
  84.     setlocale(0, "rus");
  85.     cout << "Введите кол-во элементов массива: \n";
  86.     int sizeOfArr;
  87.     cin >> sizeOfArr;
  88.  
  89.     double* pArr = new double[sizeOfArr];
  90.    
  91.     cout << "Создать массив автоматически(1)/вручную(0)?\n";
  92.     int k;
  93.     cin >> k;
  94.  
  95.     //Определяет выбор пользователя
  96.     switch (k)
  97.     {
  98.     case 1: fillArr(pArr, sizeOfArr);
  99.         break;
  100.     case 0: manualFillArr(pArr, sizeOfArr);
  101.         break;
  102.     default:
  103.         {
  104.             cout << "Недопустимое значение, попробуйте еще раз...";
  105.             getchar();
  106.             return 0;
  107.         }
  108.         break;
  109.     }
  110.     cout << "Первоначальный массив:\n";
  111.     showArr(pArr, sizeOfArr, k);
  112.     sortAfterMax(pArr, sizeOfArr);
  113.     cout << "Массив после сортировки:\n";
  114.     showArr(pArr, sizeOfArr, 2);
  115.     delete[] pArr;
  116.     system("pause");
  117.    
  118.     return 0;
  119. }
Advertisement
Add Comment
Please, Sign In to add comment