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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
demanxxx
0 / 0 / 0
Регистрация: 22.11.2008
Сообщений: 36
#1

Можно ли в двумерном массиве двигаться по столбцу? - C++

17.01.2009, 23:47. Просмотров 1140. Ответов 12
Метки нет (Все метки)

c++ можноли в двумерном массиве двигаться по столбцу
Тоесть в одном массиве двиг по строке а вовтором по столбцу
C++
1
2
3
4
5
6
7
8
9
           int p=0,q,w;
    for (i=0,q=0;q<n;q++)
    {
         for (j=0,w=0;j<n;j++)
         {
             p+=a[i][j]*b[q][w];
         } 
    }
    cout<<p;
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
manfeese
129 / 128 / 16
Регистрация: 04.01.2009
Сообщений: 415
17.01.2009, 23:55     Можно ли в двумерном массиве двигаться по столбцу? #2
Меняешь параметры строк и столюцов местами и двигаешся как надо!
В твоем случае можно сделать даже так

C++
1
2
3
4
5
6
7
8
int p=0;
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
p+=a[i][j]*b[j][i];
} 
}
cout<<p;
Splitter
201 / 143 / 5
Регистрация: 13.01.2009
Сообщений: 554
17.01.2009, 23:56     Можно ли в двумерном массиве двигаться по столбцу? #3
C++
1
2
3
4
5
6
7
int c=5;
int r=3;
 
for (int i=1; i<n; i++)
  for (int j=1; j<m; j++)
      p+=a[c,i]*b[j,r];
cout<<p
как я понял Вам что-то подобное надо, в р суммирубтся произведение колонки с номером с из а и строки с номером r из b. при этом в а - количество элементов в строке - n, а в b - количество строк - m
demanxxx
0 / 0 / 0
Регистрация: 22.11.2008
Сообщений: 36
18.01.2009, 00:03  [ТС]     Можно ли в двумерном массиве двигаться по столбцу? #4
Цитата Сообщение от Splitter Посмотреть сообщение
C++
1
2
3
4
5
6
7
int c=5;
int r=3;
 
for (int i=1; i<n; i++)
  for (int j=1; j<m; j++)
      p+=a[c,i]*b[j,r];
cout<<p
как я понял Вам что-то подобное надо, в р суммирубтся произведение колонки с номером с из а и строки с номером r из b. при этом в а - количество элементов в строке - n, а в b - количество строк - m



вобще мне нужно перемножить два одинаковых размером двумерных массива
demanxxx
0 / 0 / 0
Регистрация: 22.11.2008
Сообщений: 36
18.01.2009, 00:10  [ТС]     Можно ли в двумерном массиве двигаться по столбцу? #5
Цитата Сообщение от Splitter Посмотреть сообщение
C++
1
2
3
4
5
6
7
int c=5;
int r=3;
 
for (int i=1; i<n; i++)
  for (int j=1; j<m; j++)
      p+=a[c,i]*b[j,r];
cout<<p
как я понял Вам что-то подобное надо, в р суммирубтся произведение колонки с номером с из а и строки с номером r из b. при этом в а - количество элементов в строке - n, а в b - количество строк - m



вобще мне нужно перемножить два одинаковых размером двумерных массива

Добавлено через 4 минуты 27 секунд
смысл втом что нужно в одном массиве двигаться только по первой строке а вовтором массиве только по первом столбцэ

вобще мне нужно перемножить два одинаковых размером двумерных массива
manfeese
129 / 128 / 16
Регистрация: 04.01.2009
Сообщений: 415
18.01.2009, 00:20     Можно ли в двумерном массиве двигаться по столбцу? #6
ну вобщем гдето так должно быть

C++
1
2
3
4
for (int i = 0; i <= n; i++)
    for (int j = 0; i <= n; j++)
        for (int k = 0; k <= n; k++)
            C[i][j]+=A[j][k]*B[k][j];
Добавлено через 41 секунду
Да, только в условии не i<=n а просто i<n
demanxxx
0 / 0 / 0
Регистрация: 22.11.2008
Сообщений: 36
18.01.2009, 00:35  [ТС]     Можно ли в двумерном массиве двигаться по столбцу? #7
Цитата Сообщение от manfeese Посмотреть сообщение
ну вобщем гдето так должно быть

C++
1
2
3
4
for (int i = 0; i <= n; i++)
    for (int j = 0; i <= n; j++)
        for (int k = 0; k <= n; k++)
            C[i][j]+=A[j][k]*B[k][j];
Добавлено через 41 секунду
Да, только в условии не i<=n а просто i<n
чето не хочет выводить на экран массив c[i][j]
accept
4819 / 3239 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
18.01.2009, 00:38     Можно ли в двумерном массиве двигаться по столбцу? #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
#include <stdio.h>
 
/* перемножает два двумерных массива одинакового размера,
   строки на столбцы, вычисляя сумму */
main()
{
    int m[2][2] = {
        1, 2,
        3, 4
    };
    int n[2][2] = {
        5, 6,
        7, 8
    };
    int i, j, res;
    
    for (res = i = 0; i < 2; i++)
        for (j = 0; j < 2; j++)
            res += m[i][j]*n[j][i];
    printf("%d\n", res);
    return 0;
}
demanxxx
0 / 0 / 0
Регистрация: 22.11.2008
Сообщений: 36
18.01.2009, 00:51  [ТС]     Можно ли в двумерном массиве двигаться по столбцу? #9
фишка вот в чем
"Матрица — это двумерный массив чисел. Мы будем рассматривать квадратные матрицы, т.е. такие, в которых количество чисел по горизонтали и вертикали совпадает. Если у нас есть две матрицы A и B одинакового размера, то, умножив одну на другую, мы получим матрицу C того же размера. Любой элемент матрицы С, стоящий на пересечении строки с номером i и столбца с номером j, вычисляется как сумма всех произведений элементов строки i матрицы A на элементы столбца j матрицы B. Другими словами, С[i][j] = A[i][0].B[0][j] + A[i][1].B[1][j] + A[i][2].B[2][j] + ... и т.д."
manfeese
129 / 128 / 16
Регистрация: 04.01.2009
Сообщений: 415
18.01.2009, 01:16     Можно ли в двумерном массиве двигаться по столбцу? #10
Программа подходит для любого размера матриц, для этого надо изменить их размерность n,m,k.

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 <conio.h>
#include <iostream.h>
int main()
{
    const n=2;
    const m=n;
    const k=n;
 
    int A[n][m]={
                1,2,
                3,4};
    int B[m][k]={
                5,6,
                7,8};
    int C[n][k]={0};
 
for (int i=0; i<n; i++) {
    for (int l=0; l<k; l++)  {
        for (int j=0; j<m; j++)
            C[i][l]+=A[i][j]*B[j][l];
        cout<<C[i][l]<<" ";   }
    cout<<"\n"; }
 
getch();
return 0;
}
Добавлено через 1 минуту 28 секунд
Цитата Сообщение от manfeese Посмотреть сообщение
Простой видКопироватьПечать
for (int i = 0; i <= n; i++)
for (int j = 0; i <= n; j++)
for (int k = 0; k <= n; k++)
C[i][j]+=A[j][k]*B[k][j];
Походу я тут напутал с переменными ))
demanxxx
0 / 0 / 0
Регистрация: 22.11.2008
Сообщений: 36
18.01.2009, 01:59  [ТС]     Можно ли в двумерном массиве двигаться по столбцу? #11
в массивах 1 2 1 2 выдает 3 6
1 2 1 2 3 6
accept
4819 / 3239 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
18.01.2009, 03:06     Можно ли в двумерном массиве двигаться по столбцу? #12
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
 
#include <stdio.h>
 
/* умножает матрицы размерности 2 x 2 */
main()
{
    int m[2][2] = {
        1, 2,
        3, 4
    };
    int n[2][2] = {
        5, 6,
        7, 8
    };
    int r[2][2] = {
        0, 0,
        0, 0
    };
    int i, j, k;
    
    for (i = 0; i < 2; i++)
        for (j = 0; j < 2; j++)
            for (k = 0; k < 2; k++)
                r[i][j] += m[i][k]*n[k][j];
    printf(" %d %d\n %d %d\n",
        r[0][0], r[0][1], r[1][0], r[1][1]);
    return 0;
}
индексы не используются, только циклы
(то есть может возникнуть ощущение, что i j это индексы строки и столбца матрицы, это не так, здесь они просто для циклов)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2009, 12:12     Можно ли в двумерном массиве двигаться по столбцу?
Еще ссылки по теме:

C++ Непонятные числа в двумерном массиве
C++ Звёздочки в двумерном массиве
C++ Функции в двумерном массиве
C++ Динамика в двумерном массиве
Потерялся в двумерном массиве C++

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

Или воспользуйтесь поиском по форуму:
manfeese
129 / 128 / 16
Регистрация: 04.01.2009
Сообщений: 415
18.01.2009, 12:12     Можно ли в двумерном массиве двигаться по столбцу? #13
Цитата Сообщение от demanxxx Посмотреть сообщение
в массивах 1 2 1 2 выдает 3 6
У меня все работает!

Добавлено через 6 минут 7 секунд
|1 2| * |1 2| = |(1*1+2*1) (1*2+2*2)| = |3 6|
|1 2| |1 2| |(1*1+2*1) (1*2+2*2)| |3 6|
Yandex
Объявления
18.01.2009, 12:12     Можно ли в двумерном массиве двигаться по столбцу?
Ответ Создать тему
Опции темы

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