Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие_С++.docx
Скачиваний:
88
Добавлен:
11.04.2015
Размер:
842.63 Кб
Скачать

Обработка одномерных массивов

При решении задач обработки массивов используют, как правило, базовые алгоритмы реализации циклических вычислительных процессов: организация счетчика, накопление сумм и произведений, поиск минимального и максимального элементов массива.

Задача 1. Организация счетчика

Дан целочисленный массив: В = {bi};i=. Определитьколичество элементов массива, которые делятся на 3 без остатка, то есть кратные 3.

Схема алгоритма:

Текст программы:

#include "stdafx.h"

int main()

{ int В[20] ; // описание массива B

int i, L; // описание переменных для индекса и счетчика

printf("Введите массив В\n");

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

scanf("%d", &В[i]); // ввод данных в массив с клавиатуры

L=0; //инициализация счетчика

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

if (В[i] % 3== 0) //проверка элемента на кратность 3

L++; //увеличение счетчика на единицу

printf("Кол-во=%d\n", L); //вывод значения счетчика на экран

return 0;

}

В программе можно было для ввода использовать функцию cin, а для вывода функцию cout:

cin>> В[i]; // ввод данных в массив с клавиатуры

cout<<"Кол-во="<<L<<"\n";//вывод значения счетчика на экран

Задача 2. Накопление суммы и произведения

Дано целое число n и массив вещественных чисел:

.

Вычислить среднее арифметическое и среднее геометрическое чисел массива, используя формулы:

; .

Схема алгоритма:

Текст программы:

#include "stdafx.h"

#include <math.h>

#include <iostream>

using namespace std;

int main()

{

float X [100]; //описание массива Х

float z;

int n;

int i;

float S=0, P=1; //начальные значения суммы и произведения

cout<<"Введите размер массива n= ";

cin>>n;

cout<<"Введите массив X\n";

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

cin>>X[i];

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

{

S = S + X[i]; //добавление в сумму элемента массива Х

P =P*X[i]; // добавление в произведение элемента массива Х

}

S = S/n; // вычисление среднего значения Х

z=1.0/n;

P=pow(P,z); // вычисление среднего геометрического Х

cout<<"S="<<S<<"\n";

cout<<"P="<<P<<"\n";

return 0;

}

Задача 3. Поиск минимального и максимального элементов массива

Дан вещественный массив: T = {ti}; i=. Поменять местами минимальный и максимальный элементы массива и вывести массив после обмена.

Решение

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

Введем обозначения:

min - минимальный элемент;

imin - индекс минимального элемента;

max - максимальный элемент;

imax - индекс максимального элемента.

Схема алгоритма:

Текст программы:

#include "stdafx.h"

#include<math.h>

int main()

{

float T[10] ; // описание массива Т

int i, imin, imax;

float min, max;

printf("Введите массив Т\n");

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

scanf("%f",&T[i]);

min =+1E6; //инициализация min очень большим числом

max =-1E6; //инициализация max очень маленьким числом

for( i = 0; i<10; i++) //цикл по всем значения индекса

{

if (T[i]<min)

{

min = T[i];

imin=i; // сохранение номера текущего min

}

if( T[i]>max)

{

max = T[i];

imax = i; // сохранение номера текущего max

}

}

T[imin]=max; //запись max на место min

T[imax]= min; //запись min на место max

for( i= 0; i<10; i++) //вывод массива Т после обмена

printf("%6.2f ",T[i]);

printf("\n");

return 0;

}