Задача 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 - +