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

Даны два одномерных массива А и B. Найти их скалярное произведение. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
Lizardomsk
0 / 0 / 0
Регистрация: 20.02.2012
Сообщений: 22
02.03.2012, 16:39     Даны два одномерных массива А и B. Найти их скалярное произведение. #1
Даны два одномерных массива А и B. Найти их скалярное произведение.через С++ если можно к строчкам коментарии написать.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.03.2012, 16:39     Даны два одномерных массива А и B. Найти их скалярное произведение.
Посмотрите здесь:

Даны 2 матрицы. Проверить условие. Найти скалярное произведение. C++
Найти скалярное произведение C++
C++ Даны векторы AN={ ai }i=1,N и BN={ bi }i=1,N . Найти их скалярное произведение по формуле:
C++ Что-то не хочет пахать :( | Даны два целочисленных массива К(m) и L(n). Найти наибольший элемент массива K, не имеющий себе равных в массиве L.
Даны два произвольных одномерных массива действительных чисел М1 и М2. Сформировать слиянием этих массивов упорядоченный массив М3 C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nameless
Эксперт C++
 Аватар для nameless
289 / 288 / 14
Регистрация: 16.06.2009
Сообщений: 486
02.03.2012, 18:34     Даны два одномерных массива А и B. Найти их скалярное произведение. #2
Lizardomsk,
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
#include <iostream>
#include <array>
#include <algorithm>
 
template <std::size_t N, typename InputIterator>
struct ScalarProduct {
   static auto GetResult(InputIterator one, InputIterator two) 
      -> decltype( *one * *two) {
         return *one * *two + 
            ScalarProduct <N - 1, InputIterator>::GetResult(one + 1, two + 1);
   }
};
 
template <typename InputIterator>
struct ScalarProduct <1, InputIterator> {
   static auto GetResult(InputIterator one, InputIterator two)
      -> decltype(*one * *two) {
         return *one * *two;
   }
};
 
template <std::size_t N, typename InputIterator>
auto CalcScalarProduct(InputIterator one, InputIterator two)
   -> decltype(*one * *two) {
      return ScalarProduct <N, InputIterator>::GetResult(one, two);
}
 
int main() {
   std::array <int, 5> array_one = { 1, 2, 3, 4, 5 };
   std::array <int, 5> array_two = { 0, 1, 2, 3, 4 };
 
   std::cout << 
      CalcScalarProduct <5>(array_one.begin(), array_two.begin())
             << std::endl;
 
   return 0;
}
http://liveworkspace.org/code/254ad4...5e6469a83c0f39
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
02.03.2012, 19:20     Даны два одномерных массива А и B. Найти их скалярное произведение. #3
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <numeric>
 
int main()
{
    int a[] = { 1, 2, 3 }, a_size = sizeof(a) / sizeof(*a);
    int b[] = { -2, 4, -5 };
    
    std::cout << std::inner_product(a, a + a_size, b, 0) << std::endl;
}
NEO*
14 / 14 / 1
Регистрация: 02.11.2011
Сообщений: 22
02.03.2012, 19:40     Даны два одномерных массива А и B. Найти их скалярное произведение. #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
 
int main()
{
    int a[3]={1,2,3};
    int b[3]={4,5,6};
    int s=0;
    int i;
 
        for(i=0;i<3;i++)
    {
        s+=a[i]*b[i];
    }
    cout<<s;
    return 0;
}
Lizardomsk
0 / 0 / 0
Регистрация: 20.02.2012
Сообщений: 22
02.03.2012, 21:29  [ТС]     Даны два одномерных массива А и B. Найти их скалярное произведение. #5
нужно чтобы значения были введение с клавиатуры
NEO*
14 / 14 / 1
Регистрация: 02.11.2011
Сообщений: 22
02.03.2012, 21:36     Даны два одномерных массива А и B. Найти их скалярное произведение. #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
 
int main()
{
    int a[3];
    int b[3];
    int s=0;
    int i;
 
    for(i=0;i<3;i++) cin>>a[i];
 
    for(i=0;i<3;i++) cin>>b[i];
 
        for(i=0;i<3;i++)
    {
        s+=a[i]*b[i];
    }
    cout<<s;
    return 0;
}
Yandex
Объявления
02.03.2012, 21:36     Даны два одномерных массива А и B. Найти их скалярное произведение.
Ответ Создать тему
Опции темы

Текущее время: 02:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru