Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
первая часть.doc
Скачиваний:
26
Добавлен:
07.02.2016
Размер:
2.19 Mб
Скачать

Лабораторна робота № 6 Алгоритми обробки одновимірних масивів

Мета роботи: отримати вміння та навички програмування алгоритмів обробки одновимірних масивів

Теоретична частина

Масиви- це група елементів однакового типу (double, float, int і т.п.). З оголошення масиву компілятор повинний одержати інформацію про тип елементів масиву і їхню кількість. Оголошення масиву має два формати:

  1. Специфікатор - типу описатель [константний - вираз];

  2. Специфікатор - типу описатель [ ];

Описатель- це ідентифікатор масиву.

Специфікатор - типузадає тип елементів масиву, що повідомляється. Елементами масиву не можуть бути функції й елементи типу void.

Константний - виразв квадратних дужках задає кількість елементів масиву. Константний - вираз при оголошенні масиву може бути опущено в наступних випадках:

  • при оголошенні масив ініціалізується,

  • масив оголошений як формальний параметр функції,

  • масив оголошений як посилання на масив, явно визначений в іншому файлі.

Кожний константний - вираз в квадратних дужках визначає число елементів по даному вимірі масиву, так що оголошення двовимірного масиву містить два константних - вирази, тривимірного - три і т.д. Відзначимо, що в мові С перший елемент масиву має індекс рівний 0. Якщо ми оголосили масив int a[100], то це означає , що масив містить 100 елементів від a[0] до а[99].

Приклад:

double b[10]; /* вектор з 10 елементів, що мають ініціалізувати тип double */

Дуже важливо вміти ініціалізувати масиви, тобто привласнювати елементам масиву деякі початкові значення. У мові С для цього є спеціальні можливості. Найпростіший спосіб ініціалізації наступний: у процесі оголошення масиву вказати у фігурних дужках список ініціалізаторів:

float farr[6]={1.1,2.2,3.3,4.4.5.5,6.6};

Допускається також оголошення й ініціалізація масиву без явної вказівки розміру масиву. Наприклад:

int mass[]={1,2,3,1,2,3,4};

Проте, якщо масив великий, ця процедура стає довгою та утомлюючою. Для введення масиву використовується цикл із параметром.

Приклад:

Оголошено масив з десяти цілих елементів (int arr[10]). Потрібно ввести значення його елементів

for(i=0;i<10;i++) scanf(“%d”,&arr[i]);

Найпростішими задачами на обробку масиву є задачі на визначення його кількісних характеристик, таких, як сума елементів, їх добуток тощо.

Розглянемо алгоритм знаходження суми елементів масиву X(N). В ньому можна виділити певні дії, що є характерними для задач визначення кількісних характеристик масиву (рис. 6.1).

В таблиці 6.1. наведені аналогічні операції для знаходження таких кількісних характеристик одновимірного масиву X(N):

  • добуток елементів ();

  • кількість елементів К;

  • середнє арифметичне К елементів ();

  • середнє геометричне К елементів ();

  • максимальний, мінімальний елемент та його номер.

Таблиця 6.1.

Характеристика масиву

До циклу

В циклі

Після циклу

1

2

3

4

Сума

S=0

S=S+Xi

Вивід S

Добуток

P=1

P=P*Xi

Вивід P

Кількість

K=0

K=K+1

Вивід K

Середнє арифметичне

S=0; K=0

S=S+Xi; K=K+1

SA=S/K

Вивід SA

Середнє геометричне

P=1; K=0

P=P*Xi; K=K+1

SR=P1/K

Вивід SR

Максимальний елемент

MAX=X1або MAX=-1020

Якщо Xi>MAX, то MAX=Xi

Вивід MAX

Максимальний елемент і його номер

MAX=X1 або MAX=-1020,

L=1

Якщо Xi>MAX, то MAX=Xi,

L= i

Вивід MAX, L

1

2

3

4

Мінімальний елемент

MIN=X1або MIN=1020

Якщо Xi<MIN, то MIN=Xi

Вивід MIN

Мінімальний елемент та його номер

MIN=X1або MIN=1020

L=1

Якщо Xi<MIN, то MIN=Xi ,

L= i

Вивід MIN, L

Завдання 1.В масиві A(M) знайти суму парних елементів, максимальний елемент і його номер.

Програма (Блок-схема представлена на рис. 6.2).

#include <stdio.h>

/*Обробка одновимірного масиву*/

main()

{

float a[100];

int i, m, nom;

float s, max;

printf(“Введіть кількість елементів в масиві:”);

scanf(“%d”,&m);

/*Ввід елементів масиву*/

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

scanf(“%d”,&a[i]);

s=0;

/*Знаходження суми парних елементів*/

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

{

if(a[i]%2==0)s+=a[i];

}

/*Знаходження максимального елементу масиву*/

/*та його номер*/

max=a[0];

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

{

if(a[i]>max)

{

max=a[i];

nom=i;

}

}

printf(“\n””s=%g”,s);

printf(“\n””max=%g nom=%d”,max,nom);

}

Завдання 2.

Задано масив X(M). Сформувати, використовуючи його елементи, масив Y(M) наступним чином: додатні елементи масиву X розмістити на початку масиву Y; відємні елементи масиву X замінити на середнє арифметичне додатних елементів масиву X і розмістити їх в масиві після додатних; нульові елементи розмістити в кінці масиву Y.

Програма (Блок-схема представлена на рис. 3)

#include <stdio.h>

/*Обробка одновимірного масиву*/

main()

{

float x[100];

float y[100];

int i, m, kol, j;

float s, sar;

printf(“Введіть кількість елементів в масиві:”);

scanf(“%d”,&m);

/*Ввід елементів масиву*/

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

scanf(“%d”,&x[i]);

s=0;kol=0;

/*Знаходження суми додатних елементів масиву*/

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

{

if(x[i]>0){s+=x[i];kol++;}

}

sar=s/kol;

/*Формування нового масиву*/

j=0;

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

{

if(x[i]>0)

{

j++;

y[j]=x[i];

}

}

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

{

if(x[i]<0)

{

j++;

y[j]=sar;

}

}

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

{

if(x[i]==0)

{

j++;

y[j]=0;

}

}

printf(“\n”);

for(i=0;i<m;i++) printf(“%g”,y[i]);

printf(“\n””sar=%g”, sar);

}