Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР10-С++-26-апреля-2012.doc
Скачиваний:
24
Добавлен:
15.09.2019
Размер:
2.35 Mб
Скачать

1.4.6. Табуляция значений функции, аргумент которой – одномерный массив

Пример 10.6

Составить программу, в которой необходимо вычислить и вывести на печать в виде массива значения функции

где х =1,5; 2,6; 4,78; 5,02; 6,34; 7,12; 8,96; 9,51; 10,03; 11,15.

Результат вычислений записать как десятичные числа с фиксированной точкой и четырьмя цифрами после запятой.

Программа на С++ может иметь вид:

#include <stdio.h>

#include <conio.h>

#include <math.h>

#include <iostream.h>

#define n 9

int main()

{

int i;

float x[n],y[n];

// Ввод массива x

for (i=0; i<=n; i++)

{

cout <<"Введите " << i << "-ый элемент массива x: ";

cin >> x[i];

}

// Формирование массива y и вывод массивов x и y

cout <<"Массивы x и y: " << endl;

for (i=0; i<=n; i++)

{

y[i] = x[i] * tan(x[i]/2) + 2*log(fabs(x[i]/2));

cout << " i = " << i << " x[i] = " << x[i] << " y[i] = " << y[i] << endl;

}

cout << "Нажмите любую клавишу..." ;

getch();

return 0;

}

Пример 10.7

Одномерный массив С целых трехзначных десятичных чисел содержит 64 элемента, просуммировать элементы 1, 4, 9, 16, 25, 36, 49, 64 этого массива и выдать результат на печать, отступив от края экрана на пять позиций.

Программа на С++ может иметь вид:

#include <stdio.h>

#define n 64

int main()

{

int i;

int с[n];

float s;

// Ввод массива

for (i=0; i<n; i++)

{ cout <<"Введите " << i << " элемент массива x= ";

cin x[i];

}

s=0;

for (i=1; i<=8; i++) s = s + c[i*i];

cout <<" s = " << s << endl";

getch();

return 0;

}

1.4.7. Поиск минимального и максимального зна­чений одномерного массива

Пример 10.8 Дан массив А из 20 чисел. Составить программу, кото­рая обеспечивает выборку и печать минимального и максимального зна­чений элементов данного массива с указанием порядковых номеров этих элементов в массиве.

Нахождение наибольшего max и наименьшего min значений элементов массива A с порядковыми номерами nmax и nmin, соответственно, вы­полняется в цикле. Для этого значения текущего (i-го) элемента мас­сива сравниваются с наибольшим или наименьшим из всех предыдущих значений элементов массива. Если значение текущего элемента окажет­ся больше наибольшего из предыдущих значений элементов, то его надо считать новым наибольшим значением. В противном случае наибольшее значение остается прежним. Сказанное можно описать условной матема­тической формулой

для i =1, 2, …,n.

Аналогично для наименьшего значения

Для того, чтобы реализовать в цикле формулы (10.1) и (10.2) необходимо задать начальное значение amax и amin. Обычно поступают сле­дующим образом. До первого выполнения цикла (до первой реализации формул (10.1) и (10.2) ) в качестве максимального (минимального) значе­ния принимают значение первого элемента массиве max = a1 (min = a1), а в качестве порядкового номера максимального (минимального) элемента принимают первый элемент nmax = 1 (nmin = 1). Затем в цикле реализуются формулы (10.1) и (10.2).

Блок-схема алгоритма решения рассматриваемого примера представ­лена на рис. 10.3.

Рис. 10.3. Блок-схема алгоритма примера 8.6

Программа на C++ может иметь следующий вид:

#include <stdio.h>

#include <conio.h>

#include <math.h>

#include <iostream.h>

#define n 19

int main()

{

int i, nmin, nmax;

float c[n],max, min;

// Ввод массива c

for (i=0; i<=n; i++)

{

cout <<"Введите " << i << "-ый элемент массива c: ";

cin >> c[i];

}

max = c[0]; min = c[0]; nmax =0; nmin = 0;

// Поиск максимального и минимального элементов

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

{

if (c[i] < min) {min = c[i]; nmin = i;}

if (c[i] > max) {max = c[i]; nmax = i;}

}

cout <<"Максимальный элемент: " << nmax << " Значение: "<< max << endl;

cout <<"Мшнимальный элемент: " << nmin << " Значение: "<< min << endl;

cout << "Нажмите любую клавишу..." ;

getch();

return 0;

}