ЛАБОРАТОРНАЯ РАБОТА №4
ОБРАБОТКА ОДНОМЕРНЫХ МАССИВОВ
Цель работы: изучить особенности составного типа данных массив, научиться составлять программы с использованием одномерных массивов.
Теоретические сведения
Массив – конечная последовательность данных одного типа. Массив – составной тип данных, каждый элемент которого определяется именем и индексом (номером). Массивы бывают одномерные и многомерные. Рассмотрим особенности обработки одномерных массивов.
Помните! В языке С/С++ индекс первого элемента массива начинаются с 0.
В программе одномерный массив описывается следующим образом:
тип имя_ массива [ размер ];
где тип - один из базовых типов, используемых в С, например: int, doudle, float, char;
имя_массива –идентификатор, который задается по правилам языка;
размер – указывает количество элементов в массиве. Размер массива может задаваться константой или константным выражением. Элементами массива не могут быть функции и элементы типа void.
Примеры описания массивов:
|
|
int mas [5];
double x [4] = {1.4, -5.1, 0.375};
Для обращения к элементам массива необходимо указывать имя массива и порядковый номер – индекс, который заключают в квадратные скобки. Так в описанном выше целочисленном массиве mas к первому элементу можно обратиться как mas [0], ко второму – mas [1], …,к пятому – mas [4]. Для массива x, состоящего из действительных чисел, выполнена инициализация, причем элементы массива получат следующие значения: x [0]=1.4, x [1]=-5.1, x [2]=0.375, x [3]=0.
В языке С/С++ компилятор не контролирует выход значения индекса за пределы размера массива. За это отвечает программист.
Примеры описания массивов:
const N=10; – задание значения размера массива;
typedef double mas[N*2]; – описание типа одномерного массива;
mas a1; – декларация массива а1 типа mas;
int b [20]; – массив b из двадцати целых чисел.
Элементы массивов могут использоваться в выражениях так же, как и обычные переменные, например:
g = a1 [2] + b[ a1 [ i ] + 1];
a1 [ j ] = s + fabs(a [ j –1]);
Рассмотрим один из стандартных алгоритмов обработки массивов. Найти максимальный элемент среди вещественных чисел массива A[10].
#include<stdio.h>
#include<conio.h>
void main()
{ const N=10; /*размерность масcива А*/
float A[N]; /*описание масcива А */
float MAX; int I;
//ввод элементов массива
printf("Bведите через пробел %d чисел\n ",N);
for (I=0;I<N;I++) scanf("%f",&A[I]);
// нахождение наибольшего элемента последовательности
MAX =A[0];
for (I=1;I<N;I++)
if (A[I]>MAX) MAX =A[I];
printf("\nMАX=%.3f",MAX);
getch ();
}
Пример выполнения задания
В статическом массиве А размером N (не более 20), состоящем из целых чисел найти количество четных чисел и их сумму. Размер массива и его элементы вводятся с клавиатуры.
|
|
Составим блок-схему алгоритма решения задачи (рисунок 4.1).
Рисунок 4.1 — Блок-схема решения задачи
Текст программы с использованием ввода-вывода в потоках может иметь следующий вид:
#include <iostream.h>
#include <conio.h>
void main()
{
int a[20], n, i, kol = 0, s = 0;
cout << "\t Input N (<=20) ";
cin >> n;
cout <<"\n\t Massiv A" << endl;
for(i = 0; i < n; i++) {
cout << "\t a[ " << i+1 << " ] = ";
cin >> a[i];
}
for(i=0; i<n;i++)
if(a[i] % 2 == 0){
kol++;
s += a[i];
}
cout << "\n Kol-vo = " << kol << "\t Summa = " << s << endl;
cout << "\n Press any key... " << endl;
getch();
}
Результат выполнения программы представлен на рисунке 4.2
Рисунок 4.2 — Результат выполнения программы