Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
дз_информатика.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
171.01 Кб
Скачать

Задача 5

Определить, какой из данных векторов X[N], Y[M], Z[K] содержит наибольшее количество ненулевых компонент.

N=15

M=17

K=20

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

ПРОГРАММА

#include <stdio.h>

float func(float n[],int c)

{

int kol_vo = 0;

for (int i = 0; i < c; i ++)

if (n[i]!=0) kol_vo++;

return kol_vo;

}

void main ()

{

float x [15], y [17], z [20];

int max ,k[3],n, i, j;

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

{

printf("X[%d]: ",i);

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

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

{

printf("Y[%d]: ",i);

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

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

{

printf("Z[%d]: ",i);

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

k [0]= func(x,15);

k [1]=func(y,17);

k [2]=func(z,20);

max=k[0];n=0;

for (i=1, i<=2,i++)

{if (max<k[i])

{max=k[i]; n=i;}

}

printf ("v %d vectore %d nenul komponent", n+1,max);

}

Пояснительная записка

#include - директива препроцессора, включающая в текст программы содержимое файла, имя и путь к которому указывается после этой самой директивы. Имя файла заключается в угловые скобки, если он находится в одной из стандартных папок. Если же вышеуказанный файл находится в текущей директории, его имя заключается в кавычки.

stdio.h - данный заголовочный файл содержит описания стандартных функций ввода-вывода.

math.h - содержит объявление математических функций.

Программа состоит их двух функций: пользовательской func(float n[],int c) и обязательной функции main(). Функция main() не возвращает никаких значений и поэтому она объявляется с ключевым словом void. Пользовательская функция func(float n[],int c) возвращает вещественное значение и объявляется с ключевым словом float. Тела функций объявляются блоками и поэтому ограничены фигурными скобками.

В определении функции func(float n[],int c) участвует массив вещественных переменных n[] и целая переменная c, являющаяся размером вышеуказанного массива, все они являются формальными параметрами этой функции. В теле функции определяются локальные переменные: i(целая) – для индексов массива, kol_vo (целая) - для подсчета количества ненулевых компонент вектора, которая предварительно инициализируется с нулем. Значение переменной out (количество ненулевых компонент) возвращается функции при помощи оператора return.

В теле main() объявляются: вещественные переменные: массивы х [15], y [17], z [20] – заданные компонентами исходных векторов; целые: массив k[3] – для хранения количества ненулевых компонент векторов,max – для хранения максимального значения массива k[3], i - для индексов массивов, n – для хранения номера вектора, содержащего наибольшее количесвто ненулевых компонент.

Для того, чтобы ввести компоненты заданных массивов открываются циклы for для ввода каждого из трех массивов. Затем происходит обращение к функции func() три раза, сначала фактическим параметров является вектор х [15], затем y [17], z [20]. В результате количество ненулевых компонент векторов присваиваются элементам массива k[3]. При помощи цикла for for находим максимальный элемент k[3], значения которого затем и выводится на экран.

Далее тело функции main() закрывается фигурной скобкой. На этом программа заканчивается.

Результат:

X[0]=5

Y[0]=3

Z[0]=7

X[1]=6

Y[1]=0

Z[1]=5

X[2]= 3

Y[2]= 4

Z[2]=1

X[3]= 2

Y[3]= 1

Z[3]=0

X[4]= 0

Y[4]= 8

Z[4]=0

X[5]=3

Y[5]=0

Z[5]=6

X[6]= 0

Y[6]=7

Z[6]=0

X[7]= 0

Y[7]= 0

Z[7]=0

X[8]= 0

Y[8]=1

Z[8]=2

X[9]= 0

Y[9]=0

Z[9]=0

X[10]=5

Y[10]= 3

Z[10]=5

X[11]= 0

Y[11]= 1

Z[11]=0

X[12]= 0

Y[12]= 9

Z[12]= 4

X[13]= 6

Y[13]=5

Z[13]=3

X[14]= 0

Y[14]=2

Z[14]=0

Y[15]= 0

Z[15]=5

Y[16]= 10

Z[16]=0

Z[17]= 0

Z[18]=3

Z[19]=0

v 2 vectore 12 nenul komponent

БЛОК-СХЕМА

да

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]