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

сравнение элементов массивов разной длинны - C++

Восстановить пароль Регистрация
 
Tailor
3 / 3 / 0
Регистрация: 11.04.2012
Сообщений: 44
12.07.2012, 12:46     сравнение элементов массивов разной длинны #1
Есть 2 массива разной длинны - mass1[5], mass2[1]. Мне нужно перемножить элементы массивов так: mass1[0] * mass2[0], mass1[1] * mass2[1], mass1[1] * mass2[0], mass1[2] * mass2[1] и т.д.
Т.е. mass2 сдвигается на 1 вперед каждый раз когда элементы перемножаться.
Написал код, но это бред како-то)

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
           int mass_full[6];
    int mass_sum[2];
    int mass_result[5];
 
    mass_sum[0]=1;
    mass_sum[1]=-1;
 
    mass_full[0] = 0;
    mass_full[1] = 0;
    mass_full[2] = 1;
    mass_full[3] = -1;
    mass_full[4] = 0;
    mass_full[5] = 0;
 
    for (int i=0;i<5;i++)
    {
        for (int j=0;j<1;j++)
        {
            mass_result[i]=mass_full[i] * mass_sum[j];
            cout << mass_result[i];
            cout << endl;
        }
        
    }
Помогите, никак не додумаю
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
12.07.2012, 14:42     сравнение элементов массивов разной длинны #2
Ну набросал на быструю руку
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
#include <iostream>
#include <Windows.h>
using namespace std;
 
int main()
{
    SetConsoleCP (1251);
    SetConsoleOutputCP (1251);
    const int f_length = 6;
    const int s_length = 4;
    int first[f_length] = {2, 7, 9, 6, 7 , 8};
    int second[s_length] = {8, 7, 6, 2};
    const size_t maxValue = f_length * s_length;
    int total[maxValue]= {0};
    size_t k = 0;
    for (size_t i = 0; i<s_length; i++)
    {
        for (size_t j = 0; j<f_length; j++)
            total[k++] = first[j] * second[i];
    }
    for (size_t i = 0; i<maxValue; i++)
        cout<<total[i]<<" ";
    cout<<endl;
    system("pause");
    return 0;
}
Tailor
3 / 3 / 0
Регистрация: 11.04.2012
Сообщений: 44
13.07.2012, 14:20  [ТС]     сравнение элементов массивов разной длинны #3
Цитата Сообщение от yuron_477 Посмотреть сообщение
Ну набросал на быструю руку
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
#include <iostream>
#include <Windows.h>
using namespace std;
 
int main()
{
    SetConsoleCP (1251);
    SetConsoleOutputCP (1251);
    const int f_length = 6;
    const int s_length = 4;
    int first[f_length] = {2, 7, 9, 6, 7 , 8};
    int second[s_length] = {8, 7, 6, 2};
    const size_t maxValue = f_length * s_length;
    int total[maxValue]= {0};
    size_t k = 0;
    for (size_t i = 0; i<s_length; i++)
    {
        for (size_t j = 0; j<f_length; j++)
            total[k++] = first[j] * second[i];
    }
    for (size_t i = 0; i<maxValue; i++)
        cout<<total[i]<<" ";
    cout<<endl;
    system("pause");
    return 0;
}
при условии
C++
1
2
3
4
const int f_length = 6;
const int s_length = 2;
int first[f_length] = {0,0,1,-1,0,0};
int second[s_length] = {1,-1};
цикл опять же неправильно считает:
1) first[0] * second[0] - тут правильно
2) first[1] * second[0] - а надо first[1] * second[1]
3) first[2] * second[0] - а надо first[1] * second[0]
4) first[3] * second[0] - а надо first[2] * second[1]
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
13.07.2012, 14:40     сравнение элементов массивов разной длинны #4
Что то я не понимаю последовательности комбинаций которые вам нужны
Цитата Сообщение от Tailor Посмотреть сообщение
1) first[1] * second[1]
3) first[1] * second[0]
4) first[2] * second[1]
, а далее?..

Добавлено через 14 минут
Кажись понял, попробую позднее переделать
Tailor
3 / 3 / 0
Регистрация: 11.04.2012
Сообщений: 44
13.07.2012, 14:45  [ТС]     сравнение элементов массивов разной длинны #5
Цитата Сообщение от yuron_477 Посмотреть сообщение
Что то я не понимаю последовательности комбинаций которые вам нужны
, а далее?..
тогда распишу все шаги

1) first[0] * second[0]
2) first[1] * second[1]
3) first[1] * second[0]
4) first[2] * second[1]
5) first[2] * second[0]
6) first[3] * second[1]
7) first[3] * second[0]
8) first[4] * second[1]
9) first[4] * second[0]
10) first[5] * second[1]

т.е. с каждым шагом массив second двигаем на 1 по отношению к массиву first
как то так
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
13.07.2012, 21:08     сравнение элементов массивов разной длинны #6
Вот
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
#include <iostream>
using namespace std;
 
int main()
{
    const int f_length = 6;
    const int s_length = 2;
    int first[f_length] = {2, 3, 1, -1, 0, 7};
    int second[s_length] = {1, -1};
    const int maxValue = f_length * s_length - 1;
    int total[maxValue]= {0};
    int k = 1;
    total[0] = first[0] * second[0];
    for (int i = 1; i<f_length; i++)
    {
        for (int j = s_length-1; j>=0; j--)
        {
            total[k++] = first[i] * second[j];
        }
    }
    for (size_t i = 0; i<maxValue; i++)
        cout<<total[i]<<" ";
    cout<<endl;
    system("pause");
    return 0;
}
Tailor
3 / 3 / 0
Регистрация: 11.04.2012
Сообщений: 44
16.07.2012, 13:10  [ТС]     сравнение элементов массивов разной длинны #7
Цитата Сообщение от yuron_477 Посмотреть сообщение
Вот
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
#include <iostream>
using namespace std;
 
int main()
{
    const int f_length = 6;
    const int s_length = 2;
    int first[f_length] = {2, 3, 1, -1, 0, 7};
    int second[s_length] = {1, -1};
    const int maxValue = f_length * s_length - 1;
    int total[maxValue]= {0};
    int k = 1;
    total[0] = first[0] * second[0];
    for (int i = 1; i<f_length; i++)
    {
        for (int j = s_length-1; j>=0; j--)
        {
            total[k++] = first[i] * second[j];
        }
    }
    for (size_t i = 0; i<maxValue; i++)
        cout<<total[i]<<" ";
    cout<<endl;
    system("pause");
    return 0;
}
Все работает! А почему используете size_t а не int например?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.07.2012, 13:14     сравнение элементов массивов разной длинны
Еще ссылки по теме:

C++ Сложение массивов разной длины. Неверный результат
C++ Сравнение элементов двух массивов
Односвязный список массивов равной длинны C++

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

Или воспользуйтесь поиском по форуму:
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
16.07.2012, 13:14     сравнение элементов массивов разной длинны #8
Цитата Сообщение от Tailor Посмотреть сообщение
А почему используете size_t а не int например?
size_t это typedef от unsigned int - без знаковый int
Yandex
Объявления
16.07.2012, 13:14     сравнение элементов массивов разной длинны
Ответ Создать тему
Опции темы

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