Advertisement
Nexon

Untitled

Dec 9th, 2014
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.80 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <iostream>
  3. #include <math.h>
  4.  
  5. const int array_size = 60;
  6.  
  7. using namespace std;
  8.  
  9. double fill_array(double array[array_size]);
  10. double nonzero_geometric_mean(double array[array_size]);
  11. double find_min_value_custom(double array[array_size]);
  12. double sort_min_value_custom(double array[array_size]);
  13. int record_to_file(double array[array_size]);
  14.  
  15. void main() {
  16.     setlocale(LC_ALL, "Russian");
  17.  
  18.     double numbers[array_size];
  19.  
  20.     numbers[array_size] = fill_array(numbers);
  21.     cout<<endl<<"Массив после заполнения:"<<endl<<endl;
  22.     for(int i=0;i<array_size;i++){
  23.         cout<<i<<"\t"<<numbers[i]<<endl;
  24.     }
  25.  
  26.     cout<<endl<<"Среднегеометрическое значение ненулевых элементов всего массива: ";
  27.     cout<<nonzero_geometric_mean(numbers);
  28.     cout<<endl<<endl;
  29.  
  30.     cout<<endl<<"Наименьший элемент среди нечетных по значению элементов последней трети массива: ";
  31.     cout<<find_min_value_custom(numbers);
  32.     cout<<endl<<endl;
  33.    
  34.     numbers[array_size] = sort_min_value_custom(numbers);
  35.     cout<<endl<<"Сортировка нечётных по номеру элементов последней четверти массива по убыванию квадратов значений:"<<endl<<endl;
  36.     for(int i=0;i<array_size;i++){
  37.         cout<<i<<"\t"<<numbers[i]<<endl;
  38.     }
  39.  
  40.     record_to_file(numbers);
  41.  
  42.     system("PAUSE");
  43. }
  44.  
  45. double fill_array(double array[array_size]) {
  46.     double n = 12.0;
  47.  
  48.     for(int i=0;i<array_size;i++){
  49.         array[i] = (sin(5.0*i)+cos(10.0*i))/(tan(n*i)+5);
  50.     }
  51.  
  52.     return array[array_size];
  53. }
  54.  
  55. double nonzero_geometric_mean(double array[array_size]) {
  56.     double mult_numbers = 1.0;
  57.     double nonzero_count = 0.0;
  58.  
  59.     for(int i=0;i<array_size;i++){
  60.         if(array[i] >= 0.0){
  61.             nonzero_count+=1.0;
  62.             mult_numbers*=array[i];
  63.         }
  64.     }
  65.  
  66.     return pow(mult_numbers, 1/nonzero_count);
  67. }
  68.  
  69. double find_min_value_custom(double array[array_size]) {
  70.     double min = 1.0;
  71.  
  72.     for(int i=2*array_size/3;i<array_size;i++) {
  73.         if(fmod(i, 2.0) != 0){
  74.             if(min == 1.0)min = array[i];
  75.             if(array[i] < min)min = array[i];
  76.         }
  77.     }
  78.  
  79.     return min;
  80. }
  81.  
  82. double sort_min_value_custom(double array[array_size]) {
  83.     int done = 0;
  84.     double tmp;
  85.     int max = array_size-2;
  86.  
  87.     while(done == 0){
  88.         done = 1;
  89.         for(int i=array_size-array_size/4+1;i<max;i++) {
  90.             if(fmod(i, 2.0) != 0){
  91.                 if(pow(array[i], 2.0) < pow(array[i+2], 2.0)){
  92.                     tmp = array[i];
  93.                     array[i] = array[i+2];
  94.                     array[i+2] = tmp;
  95.                     tmp = 0.0;
  96.                     done = 0;
  97.                 }
  98.             }
  99.         }
  100.     }
  101.  
  102.     return array[array_size];
  103. }
  104.  
  105. int record_to_file(double array[array_size]) {
  106.     FILE *file = fopen("array.txt", "w");
  107.  
  108.     for(int i=0;i<array_size;i++){
  109.         fprintf(file, "%.10f\n", array[i]);
  110.     }
  111.  
  112.     return fclose(file);
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement