Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ДЗ №1 В1 Эконом.doc
Скачиваний:
22
Добавлен:
16.04.2015
Размер:
143.87 Кб
Скачать

Задача 5.

Написать программу, использующую функцию, в соответствии с вариантом задания.

вар-та

Условие задачи

Исходные данные

Примечание

1

Заданы 4 вектора. Переменной К присвоить значение 1, если скалярное произведение первого вектора на второй больше, чем скалярное произведение третьего вектора на четвертый, и значение 0 в противном случае.

A[6], B[6], C[6], D[6]

Скалярное произведение векторов оформить в виде функции

Решение:

а) Программа.

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

float scalar(float x[],float y[],int n)

{

int i; float s=0;

for(i=0;i<n;i++)s+=x[i]*y[i];

return s;

}

int main()

{

int i,k;

float A[6],B[6],C[6],D[6];

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

{

printf("A[%d]=",i+1);

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

}

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

{

printf("B[%d]=",i+1);

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

}

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

{

printf("C[%d]=",i+1);

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

}

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

{

printf("D[%d]=",i+1);

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

}

if (scalar(A,B,6)>scalar(C,D,6)) k=1;

else k=0;

printf("\nk=%d",k);

system("PAUSE");

return 1;

}

Результат:

A[1]=4

A[2]=3

A[3]=2

A[4]=5

A[5]=4

A[6]=3

B[1]=5

B[2]=1

B[3]=2

B[4]=3

B[5]=4

B[6]=4

C[1]=3

C[2]=2

C[3]=1

C[4]=5

C[5]=4

C[6]=3

D[1]=2

D[2]=5

D[3]=3

D[4]=1

D[5]=2

D[6]=5

k=1

Для продолжения нажмите любую клавишу . . .

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

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

Программа состоит из двух функций: пользовательской функции scalar(x[], у[], n) и основной функции main().

Функция scalar() возвращает вещественное значение и объявляется с ключевым словом float. Тела функций ограничены фигурными скобками.

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

В теле функции main() объявляются:

целая переменная i - необходимая для обозначения номера компонент векторов и параметра цикла for; вещественные переменные: массивы А[6], В[6], С[6], D[6] - заданные компонентами исходных векторов и целая переменная K, в которую будет записываться результат.

Для того, чтобы ввести компоненты заданных массивов, открываются циклы for для ввода каждого из четырех массивов. Затем происходит обращение к функция scalar() два раз, сначала фактическими параметрами являются вектора (А, В, 6), второй раз обращение происходит с параметрами (С, D, 6), значения которых затем сравниваются и если первое больше, то переменной K присваивается значение 1, в противном случае переменной K присваивается значение 0, после чего ее значение выводится на экран. Далее, тело функции main() закрывается фигурной скобкой. На этом программа заканчивается.

b) Блок-схема.

S=0

S=S+Xi*Yi

scalar = s

k=1

k=0

-

+

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