Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
нстана ОАИП.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.54 Mб
Скачать

Блок-схема алгоритма

Код программы

#include <iostream>

#include <iomanip>

#include <math.h>

using namespace std;

double summa(double,int);                  // Передача параметров по значению

void summa(double&,int&, double&);  // Передача параметров по ссылке

void summa(double*,int*, double*);     // Передача параметров по указателю

int main ()

{                                                            // Начало главной функции

   double a,b,h,s,x;                             // Объявление переменных

   int n = 20;

                                                           // Ввод значений:: 0.1 1.2 0.1 20

   a = 0.1;

   cout <<"a =  " << a << endl;

   

   b = 1.2;

   cout << "b = " << b << endl;

 

   h = 0.1;

   cout << "h = " << h << endl;

   x = a;

// Вывод строки заголовка таблицы

   cout<<"\n   Value"<<setw(35)<<"Pointer"<<setw(35)<<"Reference\n";

   do                           // Начало цикла по x

   { // Вывод таблицы

                                         // Передача параметров по значению

     s = 0.0;

     s = summa(x,n);   

     cout << setw(3) << x << setw(15) << s;

     s = 0.0 ;

     summa(&x, &n, &s);  // Передача параметров по указателю

     cout << setw(15) << x << setw(15) << s;

     s = 0.0;

     summa(x, n, s);  // Передача параметров по ссылке

     cout << setw(15) << x << setw(15) << s;

     cout << endl;

     x += h;                       // Изменение значения x на величину шага h

   } while (x <= b);        // Проверка условия продолжения цикла по x

   

   cout << endl;            // Переход на новую строку    

 

   return 0;

}

double summa(double x, int n)     // Передача параметров по значению

{

 double s = 0;                               // Начальное значение при  n=0   

 

 for (int i = 1; i <= n; i++) {            // Вычисление суммы   

                                                                                  

 s += pow(x, i-1) /sin( ix );

 }

 return s;                                          // Передача результата s в главную функцию

}

                                                          // Передача параметров по указателю

void summa(double *x, int *n, double *s)

{

 for (int i = 1; i <= *n; i++) {           // Вычисление суммы  

   *s += pow(*x, i-1) / sin( ix );    

 }

}

void summa(double &x, int &n, double &s)   // Передача параметров по ссылке

{  

 for (int i = 1; i <= n; i++) {   // Вычисление суммы   

   s += pow(x, i-1) / sin( ix );

 }

}

Результат работы программы

Задание 4

Ввести одномерный статический массив из k чисел. Выполнить в соответствии с номером варианта индивидуальное задание и вывести на экран исходные данные и полученный результат. Предусмотреть использование функции пользователя. Найти среднее арифметическое элементов массива, расположенных до максимального элемента.

Код программы

#include <iostream>

#include <iomanip>

#include <math.h>

using namespace std;

void fill_array(int array[ ], int*);    //заполнить список

void print_array(int array[ ], int*);  //напечатать список

int find_min_index(int array[ ], int*); //минимальный индекс

int find_max_index(int array[ ], int*); // максимальный индекс

int sredArif(int array[ ], int*, int*, int*);  

                                                // Передача параметров по указателю

void sredArif (double*,int*, double*);   

int main ()

{

 int n ;

 cout << "Vvedite razmer massiva:" << endl;              // Ввод размерности массива

 cin >> n;

 int array[n]; //вывод размерности

 fill_array(array, &n);  

 cout << endl;  

 int min_value_index = find_min_index(array, &n);  

for(pr=1;k=i=max_value_index;i<n,a[i];i++) //расположенных до максимального индекса

 cout << " sredArif: "; //Ввод суммы

 if(min_value_index) //мин. значение инекса

 {

               //вывод средней арифмитической

   cout << sredArif (array, &n, &min_value_index, &max_value_index);

 }

 cout << endl;

 print_array(array, &n);  //печать массива

 return 1; // передача результат 1 в главную строку

}

void fill_array(int array[ ], int *n) //передача значения массива

{

 for (int i = 1; i <= *n; i++)                                   

 {

   cout << "Vvedite element massiva #" << i << endl; // Ввод элемента  массива

   cin >> array[i-1];

 }

}

int find_min_index(int array[ ], int *n) //поиск минимального значения и его индекса

{  

 int min_index = 0; //минимальный индекс=0

 int min_value = array[0]; //минимальное значение =массиву 0

 for (int i = 0; i < *n; i++) //вычисление

 {

   if(array[i] <= min_value) //если массив i >= минимальному значению

   {

     min_index = i; //минимальный инекс =i

     min_value = array[i]; //минимальное значение =массиву i

   }

 }

 return min_index; //передача результат минимального индекса в главную строку

}

 }

int sredArif (int array[ ], int *n,  int *begin, int *end)  //функция суммирования 4 чисел

{

 int sredArif = 0;    

 for(int i = *begin; i <= *end; i++)  //вычисление суммы

 {

   sredArif += array[i];

 }

 return sredArif; //передача результат суммы в главную строку

}

void print_array(int array[ ], int *n){ //передача печати массива

 for (int i = 0; i < *n; i++) {

   cout << array[i] << "  " ;

 }

 cout << endl;

}