Блок-схема алгоритма
Код программы
#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;
}
