Advertisement
Garey

petur_kursova

Nov 27th, 2017
235
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.82 KB | None | 0 0
  1. #include <iostream>
  2. #include <conio.h>
  3.  
  4. using namespace std;
  5.  
  6. double input_array(double *, size_t);
  7. double average_in_interval(double *, size_t);
  8. double find_max_and_its_index(double *, size_t, size_t &);
  9. void output_array(double *, size_t);
  10. double sum_of_nonzero_elements_and_count_of_zero_elements(double *, size_t, size_t &);
  11.  
  12. int main() {
  13.  
  14.     int choice;
  15.  
  16.     size_t array_size, max_index = 0, count_of_zero_elements = 0;
  17.  
  18.     cout << "Enter array size: ";
  19.     cin >> array_size;
  20.  
  21.     if (array_size < 0 || !cin || array_size > 25) {
  22.         cout << "Error: Invalid input!";
  23.  
  24.         return 0;
  25.     }
  26.  
  27.     double *array = new double[array_size];
  28.  
  29.     do {
  30.         system("cls");
  31.  
  32.         cout << "Menu:\n";
  33.         cout << "1. Input array\n";
  34.         cout << "2. Calculate average in interval\n";
  35.         cout << "3. Calculate sum of non-zero elements and zero elements count\n";
  36.         cout << "4. Find max number in array and its index\n";
  37.         cout << "5. Output array\n\n";
  38.         cout << "0. Exit\n";
  39.  
  40.         cout << "Make your choice: ";
  41.         cin >> choice;
  42.  
  43.         switch (choice) {
  44.             case 1:
  45.                 input_array(array, array_size);
  46.                 break;
  47.  
  48.             case 2:
  49.                 cout << "\nAverage in interval: " << average_in_interval(array, array_size) << endl;
  50.                
  51.                 cout << "Press any key to get back to the menu...";
  52.                 _getch();
  53.                 break;
  54.  
  55.             case 3:
  56.                 cout << "\nThe sum of non-zero elements is " << sum_of_nonzero_elements_and_count_of_zero_elements(array, array_size, count_of_zero_elements) << " | The count of zero elements is " << count_of_zero_elements << endl;
  57.                
  58.                 cout << "Press any key to get back to the menu...";
  59.                 _getch();
  60.                 break;
  61.  
  62.             case 4:
  63.                 cout << "\nMax number is " << find_max_and_its_index(array, array_size, max_index) << " and has index " << max_index << endl;
  64.                
  65.                 cout << "Press any key to get back to the menu...";
  66.                 _getch();
  67.                 break;
  68.  
  69.             case 5:
  70.                 output_array(array, array_size);
  71.  
  72.                 cout << "Press any key to get back to the menu...";
  73.                 _getch();
  74.                 break;
  75.         }
  76.     } while (choice != 0);
  77.  
  78.     return 0;
  79. }
  80.  
  81. double input_array(double *array, size_t array_size) {
  82.     for (size_t i = 0; i < array_size; i++) {
  83.         cout << "Enter value for Element #" << i << ": ";
  84.         cin >> array[i];
  85.     }
  86.  
  87.     return *array;
  88. }
  89.  
  90. void output_array(double *array, size_t array_size) {
  91.  
  92.     cout << endl;
  93.  
  94.     for (size_t i = 0; i < array_size; i++)
  95.         cout << "Element #" << i << " has value of " << array[i] << endl;
  96. }
  97.  
  98. double average_in_interval(double *array, size_t array_size) {
  99.  
  100.     // Декларираме си сумата и задаваме начална стойност
  101.     int average = 0;
  102.  
  103.     // Декларираме ми две променливи, които ще държат числата за интервала
  104.     size_t min, max, count = 0;
  105.  
  106.     // Въвеждаме си минималният елемент от интервала
  107.     cout << "\n\nEnter min to start from: ";
  108.     cin >> min;
  109.  
  110.     // Въвеждаме си максималният елемент от интервала
  111.     cout << "Enter max to end at: ";
  112.     cin >> max;
  113.  
  114.     // Обхождаме масивът
  115.     for (size_t i = 0; i < array_size; i++) {
  116.         // Проверяваме дали текущият елемент е по-голям от минималният елемент (променливата min)
  117.         // След това проверяваме дали е по-малък от максималният елемент (променливата max)
  118.         // И накрая проверяваме дали е положително число текущият елемент от масива
  119.         //
  120.         // Ако всичките тези условия са изпълнени, променливата sum присвоява стойността на
  121.         // досегашната си стойност + текущият елемент
  122.         if (array[i] > min && array[i] < max) {
  123.             average += array[i];
  124.             count++;
  125.         }
  126.     }
  127.  
  128.     // Връщаме променливата, която държи сумата на всичките елементи в интервала
  129.     return (average / count);
  130. }
  131.  
  132. double find_max_and_its_index(double *array, size_t array_size, size_t &index) {
  133.  
  134.     int max;
  135.  
  136.     size_t positive_counter = 0;
  137.  
  138.     for (size_t i = 0; i < array_size; i++) {
  139.         if (array[i] > 0) {
  140.             positive_counter++;
  141.             index = i;
  142.         }
  143.     }
  144.  
  145.     if (positive_counter == 0) {
  146.         cout << "No positive numbers in the array!";
  147.         return 0;
  148.     } else {
  149.         max = array[index];
  150.     }
  151.  
  152.     for (size_t i = 0; i < array_size; i++) {
  153.         if (max < array[i]) {
  154.             max = array[i];
  155.             index = i;
  156.         }
  157.     }
  158.  
  159.     return max;
  160. }
  161.  
  162. double sum_of_nonzero_elements_and_count_of_zero_elements(double *array, size_t array_size, size_t &count) {
  163.     count = 0;
  164.  
  165.     int sum = 0;
  166.  
  167.     for (size_t i = 0; i < array_size; i++) {
  168.         if (array[i] == 0)
  169.             count++;
  170.         else if(array[i] != 0)
  171.             sum += array[i];
  172.     }
  173.  
  174.     return sum;
  175. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement