Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
noob123
0 / 0 / 0
Регистрация: 22.11.2009
Сообщений: 33
#1

Скалярное произведение. - C++

20.12.2009, 12:28. Просмотров 1789. Ответов 5
Метки нет (Все метки)

Добрый лень, нужна помощь в реализации программы, вычисляющая скалярное произведение 2-х векторов используя рекурсию на языке Си. Заранее спасибо.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2009, 12:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Скалярное произведение. (C++):

Скалярное произведение - C++
Составить программу, которая проверяет, есть ли среди векторов, заданных своими координатами. Вычисление скалярного произведения векторов...

Скалярное произведение - C++
Взываю о помощи! в программе есть функция Skal, которая вычисляет скалярное произведение 2х векторов. Вроде все сделала правильно, но...

Скалярное произведение - C++
Ввести прямоугольную матрицу вещественных чисел. Определить номера двух строк введенной матрицы с наибольшим скалярным произведением....

Скалярное произведение векторов - C++
Объясните, пожалуйста, значение вот этой строки: int scalar(int V1, int V2, int n)

Скалярное произведение векторов - C++
Здравствуйте! Помогите пожалуйста найти ошибки #include <iostream> using namespace std; int main(int argc, char *argv) { ...

Найти скалярное произведение - C++
ДОБРООГО ДНЯ ВСИМ КТО МОЖЕ МЕНИ ДОПОМОГТИ В РИШЕНІ ДАНОЇ ЗАДАЧИ НЕХАЙ ДАНА МАТРИЦЯ N*N ВСІ ЕЛЕММЕНТИ ЯКОЇ РІЗНІ ЗНАЙДІТЬ СКАЛЯРНИЙ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
20.12.2009, 14:08 #2
a(a1, a2, a3, a4) b(b1, b2, b3, b4)

a*b = |a1*b1 + a2*b2 + a3*b3 + a4*b4|
0
Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
20.12.2009, 14:29 #3
вот так пойдет
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
#include <conio.h>
using namespace std;
 
int scalar(int V1[],int V2[],int n)
{
    int i=V1[n]*V2[n];
    if(!n)return i;
    return i + scalar(V1,V2,n-1);
}
void read(int V[],int n)
{
     for (int i=0;i<n;i++)
     {
         cout << i << "-";
         cin >> V[i];
     }
}
void write(int V[],int n)
{
     for (int i=0;i<n;i++)
     {
         cout << "["<< i <<"]="<< V[i] << " ";
     }
     cout << endl;
}
 
int main()
{
    const int n=5;
    int V1[n],V2[n];
    read(V1,n);
    read(V2,n);
    write(V1,n);
    write(V2,n);
    int s=scalar(V1,V2,n-1);
    cout << s;
    getch();
    return 0;
}
0
noob123
0 / 0 / 0
Регистрация: 22.11.2009
Сообщений: 33
20.12.2009, 15:34  [ТС] #4
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <stdio.h>
#include <conio.h>
 
#define SIZE 10
 
void enter_vector (int vector[], int por);
int scalar (int vector1[], int vector2[], int por);
 
int main()
{
    int x[SIZE], y[SIZE], n, res;
 
    printf ("\nInput n -> ");
    scanf_s ("%d",&n);
 
    if (n > 0 && n <= SIZE)
    {
        enter_vector(x, n);
        enter_vector(y, n);
        res = scalar (x, y, n - 1);
 
        printf ("\nres = %d",res);
    }
    else
        printf ("\nError. Input other n.");
 
    _getch();
    return 0;
}
 
void enter_vector (int vector[], int por)
{
    int i;
 
    printf ("\nInput vector -> ");
    
    for (i = 0; i < por; i++)
        scanf_s ("%d",&vector[i]);
}
 
int scalar (int vector1[], int vector2[], int por)
{
    int sum = vector1[por] * vector1[por];
    if (!por) return sum;
    return sum + scalar(vector1,vector2,por-1);
}
Вот что получилось. Некорректно в некоторых случаях вычисляет, где я ошибся?
0
Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
20.12.2009, 17:36 #5
я понял о чем ты, при n=3 и [1,2,3]x[2,2,2]=14, а должно быть 12. сейчас посмотрим

ошибка в 43 строчке:
C
1
int sum = vector1[por] * vector1[por];
должно быть:
C
1
int sum = vector1[por] * vector2[por];
1
noob123
0 / 0 / 0
Регистрация: 22.11.2009
Сообщений: 33
20.12.2009, 17:47  [ТС] #6
Aye Aye, Огромное спасибо за помощь!)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.12.2009, 17:47
Привет! Вот еще темы с ответами:

Скалярное произведение двух массивов - C++
Напишите функцию, которая вычисляет скалярное произведение двух массивов.Массивы содержат элементы типа float. Каждый массив передается в...

Найти скалярное произведение векторов - C++
нужно написать две программы 1) нахождение скалярного произведения векторов 2) вычисление...

[Геометрия]Скалярное произведение векторов - C++
Добрый день. Есть вот такая задача: Я написал программу, но не уверен верно ли написал. #include &lt;iostream.h&gt;

Скалярное произведение элементов матрицы - C++
Условия задачи: &quot;На внешнем носителе (в файле) построчно подготовлены элементы матрицы А(m,n). Для заданных k и l ввести элементы k-й...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
20.12.2009, 17:47
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru