Приклад виконання завдання. Розробка і реалізація програм обробки лінійних масивів
Розробка і реалізація програм обробки лінійних масивів.
Мета: оволодіння практичними навичками роботи з масивами, особливостями їх вводу і виводу, набуття подальших навичок по організації програм циклічної структури з використанням прийомів програмування.
Завдання для самостійної підготовки.
1. Розробити алгоритм розв'язання згідно з завданням.
2. Скласти програму розв'язання задачі згідно варіанту завдання вказаного викладачем.
3. Підготувати тест для перевірки завдання.
Завдання до роботи.
1. Обробити на ПК масив згідно варіанту завдання.
2. Перевірити вірність виконання програми за допомогою тестового
варіанту.
Завдання 5.1
Представити математичний запис фрагменту програми і обчислити значення змінної x після її виконання, якщо
A[0]=3, A[1]=-5, A[2]=6, A[3]=12, A[4]=-3
№ | Фрагмент програми | № | Фрагмент програми | ||
а | int n=5; float x=0; for (i=0;;i<n;i++) x=x+A[i]; | а | int n=5; for (j=1; j<n;j++) if (A[j]<0 x=A[j]; | ||
б | int t=2;int n=3; float x=A[1]; for ( j=0; i<n;j++) x=x*t+A[j] | б | int n=4; float x=A[n]; for ( j=n-1;j>=0;i--) x=A[j]+1/x; | ||
а | float x=0; int n=5; int i=2; while(i<n) { x=x+A[i]; i+=2; }; | а | int n=5; float x=A[1]; int i=0; while(i<n){ if (A[i]<x) x=A[i]; i+=2; }; | ||
б | int n=4; float x=A[1]; for ( int j=2; j<n;j++) if (A[j]<x x=A[j]; | б | int t=3,n=5; float x=A[n+1]; for (int i=1; i<n;i+=2) x=x+A[j]****; | ||
а | int n=5; float x=0; for (int i=0; i<n;i++) if (A[i]<0 x=x+1; | а | float x=0; int i=0; while(i<5){ if (A[i]>0 x=x+A[i]; i++; }; | ||
б | int n=5; int m=n%2; int k=n; for(j=0;j<=m;j++){ y=A[j]; A[j]=A[k]; A[k]=y; k--; } x=A[1]; | б | int n=4; float x=0; int k=0; for ( j=0;i<n;i++) if (A[j]>0 { x=x+A[j]; k++ }; if (k<>0 x=x/k; | ||
а | int n=5; float x=1; M=A[0]; for (int i=1; i<n;i++){ if (A[i]<M){ M=A[i]; x=i; }; | а | float x=0; int k=0; for(int i=0; i<5;i++) if (A[i]>0 { x=x+A[i]; k++; }; | ||
б | int t=2; int n=5; float x=A[0]; int j=0; do{ x*=t+A[j+1]; J++;} while(j<n); | б | int n=4; float x=A[0]; for (int j=0; i<n;j++) if (A[j]<x) x=A[j]; | ||
а | int i=0; float count=0; while(i<5){ if (A[i]<0){ count++; i++; }; | а | int n=5; float x=A[0]; for ( int i=1; i<n;i++) if (A[i]>x x=A[i]; | ||
б | int n=4; float x=0; int k=0; for ( j=0;i<n;i++) if (A[j]>0){ x+=A[j]; k++; } if (k!=0 x=x/K; | б | int n=5; float x=0; for (j=n-1;j>=0;j--) x+=A[j]; | ||
а | int n=5; float x=A[0]; int i=1; while(i<n){ if (A[i]<x) x=A[i]; i++; } | а | i=0; x=0; n=5; while(i<n){ x=x+A[i]; i=i+2; } | ||
б | int n=5; float x=A[n]; int j=n-1 do{ x=A[j]+1/x; j--;} while(j>=0); | б | n=5; x=0; j=1 While(j<n){ X+=A[j]; j=j+1 }; | ||
а | int i=0; int n=5; float x=0; while(i<n){ x=x+A[i]; i++; }; | а | int n=5; float x=0; float M=A[0]; for ( i=0; i<n;i++) if (A[i]<M)[ M=A[i]; x=i; } | ||
б | int N=5; float x=0; for(j=n-1;j>=0;j--) x=x+A[j]; | б | int t=2; int n=3; float x=A[0]; int j=1; do{ x=x*t+A[j+1]; j++;} while(j<n); | ||
а | float x=0; int k=0; for ( int i=0;i<5){ x=x+A[i];k++; } x=x/k; | а | int n=5; float x=0; for(i=0;i<n;i++) if (A[i]<0 x=x+1; | ||
б | int cnt=0,n=5;float x=0; int j=0; while(int j<n){ if (A[j]>0){ x=x+A[j]; j++;cnt++; } } x/=cnt; | б | int n=5; x=A[n]; int j=n-1 do{ x=A[j]+1/x; j--;} while(j!=0); |
Завдання 5.2
Опрацювати на ЕОМ масив згідно з варіантом завдання, вказаного в таблиці.
Варіант | Масив | Дія | |
а | А(10) | Визначити найбільший елемент цілочисленного масиву | |
б | А(7) | Визначити максимальний елемент серед додатних чисел | |
а | А(15) | Знайти порядковий номер найменшого елементу масиву | |
б | А(12) | Знайте середнє арифметичне для чисел, що стоять на непарних місцях | |
а | А(6) | Визначити кількість додатних елементів у масиві | |
б | А(17) | Визначити індекси найбільшого і найменшого елементів | |
а | А(9) | Визначити кількість від'ємних елементів | |
б | А(20) | Визначити індекс першого від'ємного елементу | |
а | А(21) | Знайти найменший елемент масиву | |
б | А(14) | Знайти мінімальний елемент серед від'ємних значень масиву | |
а | А(18) | Визначити порядковий номер найбільшого елементу | |
б | А(10) В(10) | Серед масивів А і В визначити масив, в якому сума елементів найбільша | |
а | А(16) | Обчислити суму всіх елементів масиву | |
б | А(8) В(8) | Серед масивів А і В визначити масив, в якому сума елементів найменша | |
а | А(5) | Обчислити суму від'ємних елементів масиву | |
б | А(10) | Знайти добуток найбільшого і найменшого елементу | |
а | А(11) | Обчислити суму додатних елементів масиву | |
б | А(13) | Визначити найменший елемент серед чисел, що стоять на парних місцях | |
а | А(18) | Визначити кількість елементів масиву, значення яких більше числа n | |
б | А(7) | Протабулювати функцію y=sin(x) на інтервалі [- p; p] з кроком h=0,5 з записом її значень в масив. Вивести кількість елементів сформованого масиву | |
а | А(10) | Визначити кількість елементів масиву, значення яких менше дійсного числа k | |
б | А(16) | Визначити кількість максимальних елементів у масиві | |
а | А(25) | Обчислити середнє арифметичне значення додатних чисел масиву | |
б | А(17) | Визначити кількість мінімальних елементів у масиві | |
а | А(10) | Обчислите середнє арифметичне від'ємних значень | |
б | А(8) | Записати +1 замість максимального елементу масиву, а –1 замість мінімального | |
а | А(15) | Обчислити середнє арифметичне серед додатних значень масиву | |
б | А(19) | Сформувати масив N, елементами якого є від'ємні числа цілочисленного масиву А |
Приклад виконання завдання
Завдання 5.1
Представити математичний запис фрагменту програми
int n=4; int x=A[0];
for (int i=0;i<n;i++)
if (fabs(A[i]<x)) x=fabs A[i]);
і обчислити значення змінної Х після її виконання, якщо
A[0]=3, A[1]=-5, A[2]=4, A[3]=-3.
Розв'язання
даний фрагмент програми знаходить мінімальний по модулю елемент одномірного масиву (вектору).
a={3;-5;4;-3}, x=min|ai|, (i=0;,2,3,4)
Після виконання фрагменту x=5.
Завдання 5.2
Просумувати усі від'ємні елементи масиву
a={2, -5, -10, 4, 6, 7, -13, -11, -9, 5},
які мають непарні індекси.
Постановка задачі.
Дано масив А, елементами якого є десять цілих чисел (А(10)).
Скласти програму підсумовування від'ємних елементів, які мають непарні індекси (і=1,3,5,…,9)
2. Алгоритм розв'язання задачі
На алгоритмічній мові даний алгоритм може бути представлений в такому вигляді:
Алг СУМА ВІД'ЄМ НЕПАРНИХ(ціл n,цілтаб A[1:n],ціл S)
Арг n,A
Рез S
Почціл і
i=0; S=0
Поки i<n
Пц
Якщо A[i]<0
То S=S+A[i]
Все
i=i+2
Кц
Кін
Блок-схема
Блоком 2 передбачається ввід елементів масиву А, а блоком 3 – їх перегляд на екрані після вводу.
В блоці 4 здійснюється підготовка до сумування очищується змінна S, в якій буде накопичуватись сума від'ємних елементів, які мають не парні індекси.
В блоці 5 задається початкове значення індексу.
В блоці 6 здійснюється перевірка його на досягнення кінцевого значення.
Якщо кінцевого значення не досягнуто (так), здійснюється перевірка, чи є чергове число A[i] від'ємним (Блок 7).
Якщо черговий елемент від'ємний (відповідь так), то він додається до значення змінної S (Блок 8).
В блоці 9 встановлюється чергове значення індексу.
В блоці 10 здійснюється виведення результату.
Програма.
//Лабораторна робота №5
//Обробка лінійних масивів
//Виконав студент гр ХХХХХХХХХ
//ХХХХХХХХ ХХХХХХХ
#include <stdio.h>
#include <conio.h>
int main(){
const int n=10;//Розмірність масиву
int A[n];
int i,S=0;
//
printf("\n Input elements array\n\n");
for (i=0;i<n;i++){
printf("A[%i] -->\t",i+1);
scanf("%i",&A[i]);
}
printf("\n Sourse array:");
for (i=0;i<n;i++)
printf("%4i",A[i]);
printf("\n");
for(i=0;i<n;i+=2){
if (A[i]<0)
S+=A[i];
}
printf("\n Suma negative elements: %7i",S);
getch();
return 0;
}
Протокол роботи програми :
Контрольні запитання
1. Який тип можуть мати елементи масиву?
2. Як описуються масиви?
3. Які операції можна виконувати над елементами масивами?
4. Даний масив A[6] з початковими значеннями елементів:
A[0]= 7; A[1]= -1; A[2]= 0; A[3]= 4; A[4]= 15; A[5]= 3;
Якими стануть ці значення після виконання кожного з нижче наведених фрагментів програми:
int A[6];
int i,j,q;
а) q=A[4]+A[1];
A[5]=q;
б) A[4]=A[2]+A[2+1];
A[1]=A[6-1]+A[5-2];
в) i=1;
j=i+3;
A[i]=A[j]+A[j+1];
г) for (int i=0;i<5;i++)
A[i]=A[i+1];
5. Які значення буде містити в собі масив х після виконання наступного фрагменту програми? Що буде виведено на друк?
int х[5];
int y;
...
x[0]=2; x[1]=2;
x[2]=1; x[3]=3; x[4]=1;
y=x[2]+1;
printf(“\n%i”,y);
x[5]=4;
printf(“\n%i”, x[x[5]]));
y=y+2;
printf(“\n y=%i x[y]=%i”,y,x[y]);
...