Phoenix_x

Untitled

Jan 8th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.13 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <iostream> //cout cin
  3.  
  4. using namespace std;
  5.  
  6. //декларация на функция
  7. void readData(double numbers[30], int &size);
  8. void positiveSum(double numbers[30], int size);
  9. void negativeAverageInRange(double numbers[30], int size);
  10. void notZeroMultiplication(double numbers[30], int size);
  11. void smallestPosNumberAndIndex(double numbers[30], int size);
  12. void printElements(double numbers[30], int size);
  13.  
  14. int main()//главната функция
  15. {
  16.     double numbers[30]; //масив от дробни числа, резервирани места до 30
  17.     int size = 0; //размерност, която ще зададе потребителя
  18.  
  19.     while (true) { //безкраен цикъл за менюто
  20.         cout << "Izberete 1 za vavejdane na razmernost i elementi na masiv." << endl;
  21.         cout << "Izberete 2 za suma na polojitelni chisla." << endl;
  22.         cout << "Izberete 3 za sredno aritmetichno na otricatelni chisla v interval." << endl;
  23.         cout << "Izberete 4 za proizvedenie i broy na nenulevite chislata ot masiva." << endl;
  24.         cout << "Izberete 5 za minimalno polojitelno chislo i negoviq poreden nomer." << endl;
  25.         cout << "Izberete 6 za izvejdane na elementite na masiva." << endl;
  26.         cout << "Vashata opciq: ";
  27.  
  28.         int option; //от 1 до 6
  29.         cin >> option;
  30.  
  31.         switch (option) //провери избора
  32.         {
  33.         case 1: //ако изборът е 1 изпълни всичко преди break
  34.             readData(numbers, size);
  35.             break;
  36.  
  37.         case 2:
  38.             positiveSum(numbers, size);
  39.             break;
  40.  
  41.         case 3:
  42.             negativeAverageInRange(numbers, size);
  43.             break;
  44.  
  45.         case 4:
  46.             notZeroMultiplication(numbers, size);
  47.             break;
  48.  
  49.         case 5:
  50.             smallestPosNumberAndIndex(numbers, size);
  51.             break;
  52.         case 6:
  53.             printElements(numbers, size);
  54.             break;
  55.         }
  56.     }
  57.  
  58.     return 0;
  59. }
  60.  
  61. //функция за запис:
  62. void readData(double numbers[30], int &size)
  63. {
  64.     cout << "Razmernost(n): "; //задаване на брой числа за масива
  65.     cin >> size;
  66.  
  67.     while (size < 1 || size > 30) { //ако броя числа не е между 1 и 30 - невалидна размерност
  68.         cout << "Nevalidna razmernost.";
  69.         cout << "Vavedete razmernost otnovo: ";
  70.         cin >> size;
  71.     }
  72.  
  73.     double readNumber;
  74.  
  75.     //въвеждане на числа в масива:
  76.     for (int i = 0; i < size; i++)
  77.     {
  78.         cout << "a[" << i << "]" << " = ";
  79.         cin >> numbers[i];
  80.     }
  81. }
  82.  
  83. //функция за намиране на сумата на положителни числа
  84. void positiveSum(double numbers[30], int size)
  85. {
  86.     double positiveSum = 0;
  87.  
  88.     for (int i = 0; i < size; i++) //за всяко от масива
  89.     {
  90.         if (numbers[i] > 0) //ако числото е положително
  91.         {
  92.             positiveSum += numbers[i]; //прибави го към сумата
  93.         }
  94.     }
  95.  
  96.     cout << "Suma na polojitelni chisla: " << positiveSum << endl;
  97. }
  98.  
  99. //средно аритметично на отрицателни числа в зададен интервал
  100. void negativeAverageInRange(double numbers[30], int size)
  101. {
  102.     double sum = 0; //променлива за сумата
  103.     double count = 0; //броя числа
  104.     double min;
  105.     double max;
  106.  
  107.     cout << "Min: ";
  108.     cin >> min;
  109.     cout << "Max: ";
  110.     cin >> max;
  111.  
  112.     for (int i = 0; i < size; i++) //за всяко число от масива
  113.     {
  114.         if (numbers[i] < 0 && numbers[i] >= min && numbers[i] <= max) //ако числото е отрицателно, по-голямо от min и е по-малко е от max
  115.         {
  116.             sum += numbers[i]; //прибави го към сумата
  117.             count++; //увеличи бройката с едно
  118.         }
  119.     }
  120.  
  121.     if (count == 0) //ако броя числа е 0, изведи съобщение
  122.     {
  123.         cout << "Masivat ne sudurja otricatelni chisla v zadadeniq interval." << endl;
  124.     }
  125.  
  126.     else //ако има числа, изведи средноаритметичното
  127.     {
  128.         cout << "Аverage: " << sum / count << endl;
  129.     }
  130. }
  131.  
  132. //произведение на всички ненулеви числа
  133. void notZeroMultiplication(double numbers[30], int size)
  134. {
  135.     double multiplication = 1; //произведение на числата
  136.     double count = 0; //бройка
  137.  
  138.     for (int i = 0; i < size; i++) //за всяко число от масива
  139.     {
  140.         if (numbers[i] != 0) //ако числото не е 0
  141.         {
  142.             multiplication *= numbers[i]; //произведението да се умножи с числото
  143.             count++; //бройката да се увеличи с едно
  144.         }
  145.     }
  146.  
  147.     cout << "Proizvedenie: " << multiplication << endl; //изпише произведението
  148.     cout << "Broy: " << count << endl; // изведи бройката на ненулевите числа
  149. }
  150.  
  151. //най-малко положително число и поредния му номер
  152. void smallestPosNumberAndIndex(double numbers[30], int size)
  153. {
  154.     double smallestPosNumber = 99999999;
  155.     int index = 0;
  156.  
  157.     for (int i = 0; i < size; i++) //за всяко число от масива
  158.     {
  159.         if (numbers[i] > 0 && smallestPosNumber > numbers[i]) //ако числото е положително и е по-малко
  160.                 //от стойността за най-малко число
  161.         {
  162.             smallestPosNumber = numbers[i]; //промени стойността на най-малкото число, с новото число
  163.             index = i; //вземи поредния номер на новото число
  164.         }
  165.     }
  166.  
  167.     if (smallestPosNumber == 99999999) { // няма положителни числа
  168.         cout << "Masivat ne sudarja polojitelno chislo" << endl;
  169.     }
  170.  
  171.     else //ако има положителни числа:
  172.     {
  173.         cout << "Chislo: " << smallestPosNumber << endl;
  174.         cout << "Poreden nomer: " << index + 1 << endl; // + 1, защото се почва от 0
  175.     }
  176. }
  177.  
  178. //изведи всичи елементи
  179. void printElements(double numbers[30], int size)
  180. {
  181.     for (int i = 0; i < size; i++) //за всеки елемент от масива
  182.     {
  183.         //изведи индексът - i, и стойността на му numbers[i]
  184.         cout << "a[" << i << "]" << " = " << numbers[i] << endl;
  185.     }
  186. }
Advertisement
Add Comment
Please, Sign In to add comment