Приклад виконання завдання Завдання 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},
які мають непарні індекси.
1. Постановка задачі.
Дано масив А, елементами якого є десять цілих чисел (А(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;
}
Протокол роботи програми :
Контрольні запитання
Який тип можуть мати елементи масиву?
Як описуються масиви?
Які операції можна виконувати над елементами масивами?
Даний масив 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];
Які значення буде містити в собі масив х після виконання наступного фрагменту програми? Що буде виведено на друк? 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]); ...