Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2K_programuvanna / Практика / 1 mod / Lab_2_func_mas

.doc
Скачиваний:
29
Добавлен:
19.04.2015
Размер:
44.03 Кб
Скачать

ТЕМА : ФУНКЦИИ

Занятие 2. Передача массивов при вызове функций.

Пример Вычислить

.

Предлагается, кроме главной функции main(), использовать еще две: одну, назовем ее vvod(), для ввода значений одномерного массива, а вторую – sum() для получения суммы произведений элементов массива на синусы, найденные для значений элементов.

#include<stdio.h>

#include<math.h>

#define Nx 6

#define Ny 10

#define Nz 9

void vvod(float x[ ], int n, char q);

float sum(float x[ ], int n);

void main()

{

float x[Nx], y[Ny], z[Nz], w, znam;

vvod(x, Nx, ‘x’);

vvod(y, Ny, ‘y’);

vvod(z, Nz, ‘z’);

znam=sum(y, Ny);

if(znam)

{

w=sum(x, Nx)/znam+sum(z, Nz);

printf(“w=%f\n”,w);

}

else

puts(“Деление на 0”);

}

void vvod(float x[], int n, char q)

{

int I;

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

{

printf(“Введите %c[%i]=\n”, q, i+1);

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

}

return;

}

float sum(float x[ ], int n)

{

int i;

float s=0;

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

s+=x[i] * sin(x[i]);

return s;

}

В этом примере в качестве формального параметра используется одномерный массив х типа float. О том, что это массив, а не простая переменная, свидетельствуют квадратные скобки после имени. Одна пара квадратных скобок означает, что массив одномерный. Соответственно, если две пары – двумерный, три – трехмерный и т.д.

При передаче массива разрешается одну самую левую пару квадратных скобок оставлять пустой. Соответствующее количество элементов в этой паре скобок будет определяться автоматически.

В функции vvod() в массиве float х[ ] будут размещены элементы вводимого с помощью этой функции одномерного массива. Количество элементов массива будет передано формальному параметру int n. Символ char q получает фактическое имя массива для того, чтобы при вводе его элементов это имя высвечивалось на экране.

Так, например, при вызове vvod(x, Nx, ‘x’); передаются начальный адрес массива x[Nx], описанного в функции main(). Этот адрес присваивается формальному параметру float x[]. Количество элементов Nx присваивается формальному параметру int n, а символьная константа ‘x’ присваивается формальному параметру char q.

При циклическом вводе в функции vvod( ) реализуется приглашение printf(“Введите %c[%i]=\n”,q, i+1);

и непосредственно ввод

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

При выполнении оператора printf ( ) вместе %с будет подставлено значение q, т.е. ‘x’ (без апострофов), а вместо %с будет выведено i+1(для удобства, чтобы x[0] при печати приглашения был x[1] и т.д.).

После окончания работы цикла for в памяти, отведенной компилятором под описанный в функции main( ) массив x[Nx], располагаются введенные значения элементов этого массива.

Точно так же заносятся элементы массивов y[Ny] и z[Nz] при вызовах

vvod(y, Ny, ‘y’); и vvod(z, Nz, ‘z’). При вызове функции sum( ) передается начальный адрес массива и количество элементов. Так, при вычислении знаменателя

znam=sum(y, Ny);

формальному параметру float x[] передается начальный адрес (адрес элемента y[0]) массива float y[Ny]. Формальному параметру int n передается количество элементов.

В цикле происходит накопление суммы s+=x[i] * sin(x[i]);

После выхода из цикла с помощью return s полученный результат возвращается в вызывающую функцию. В конкретном случае он присваивается переменной znam.

Задания

1 Підрахувати кількість крапок, що знаходяться всередині кола радіусом R з центром на початку координат; координати задані масивами x(100), y(100). Відстань крапки від початку координат обчислювати у функції.

2 Обчислити суми додатних елементів масивів x(N), y(M), z(K); N< 60, M< 60, K< 70. Суми додатних елементів обчислювати за допомогою функції.

3 Обчислити середнє арифметичне додатних елементів для масивів a(N1), b(N2), c(N3) ; N1< 100, N2< 100, N3< 100. Середнє арифметичне додатних елементів обчислювати за допомогою функції.

4 Підрахувати кількість елементів матриць x(10,15), y(20,12), що задовольняють умову 0< xij< 1, 0< yij< 1. Кількість елементів, що задовольняють умову, обчислювати за допомогою функції.

5 Обчислити суми додатних елементів кожного рядка для матриць a(10,12), b(15,10). Суми додатних елементів обчислювати за допомогою функції.

6 Обчислити z=(xm1+xm2)/2, де xm1,xm2 - найменші елементи масивів x1(70), x2(80). Найменші елементи масивів обчислювати за допомогою функції.

7 Обчислити суми елементів головних діагоналей матриць a(N, N), b(М,М); М< 20, N< 30. Суми елементів головних діагоналей обчислювати за допомогою функції.

8 Обчислити z=(s1+s2)/2, де s1 - сума додатних елементів масиву x(50); s2 - сума від’ємних елементів масиву y(60). Суми обчислювати в одній функції.

9 Підрахувати кількість нульових елементів для матриць a(N, М), b(М, N); М<20, N<20. Кількість нульових елементів обчислювати за допомогою функції.

10 Обчислити суми елементів, що знаходяться нижче головної діагоналі для матриць a(15,15) і b(20,20). Суми елементів, що знаходяться нижче головної діагоналі, обчислювати за допомогою функції.

11 Визначити кількість додатних елементів до першого від’ємного елемента в масивах x(40), y(50), z(N); N <50. Кількість додатних елементів до першого від’ємного обчислювати за допомогою процедури-функції.

12 Дано вектори а(4), b(5), c(3). Обчислити довжину векторів за допомогою функції.

13 Знайти скалярний добуток тривимірних векторів ab, bc, ca. Обчислити скалярний добуток за допомогою функції.

14 Обчислити z=(xm1+xm2)/2, де xm1,xm2 - найбільші елементи масивів x1(70), x2(80). Найменші елементи масивів обчислювати за допомогою функції.

15 Обчислити суми елементів побічних діагоналей матриць a(N, N), b(М,М); М< 20, N< 30. Суми елементів головних діагоналей обчислювати за допомогою функції.

16 Підрахувати кількість ненульових елементів для матриць a(N, М), b(М, N); М<20, N<20. Кількість нульових елементів обчислювати за допомогою функції.

17 Обчислити суми елементів, що знаходяться вище головної діагоналі для матриць a(15,15) і b(20,20). Суми елементів, що знаходяться нижче головної діагоналі, обчислювати за допомогою функції.

18 Визначити кількість від’ємних елементів до першого додатного елемента в масивах x(40), y(50), z(N); N <50. Кількість від’ємних елементів до першого додатного обчислювати за допомогою функції.

Соседние файлы в папке 1 mod