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

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

Войти
Регистрация
Восстановить пароль
 
Rikk
45 / 5 / 1
Регистрация: 10.06.2011
Сообщений: 265
#1

И снова у меня ошибка в коде - C++

20.06.2011, 16:52. Просмотров 510. Ответов 13
Метки нет (Все метки)

Всем доброго времени суток!
У меня не пашет опять прога, я не знаю в чём ошибка, вот задание
Реализовать умножение двух матриц А(3*4) и В(4*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
#include<stdio.h>
int main()
{
int i, j, k, a[20], b[20], c[16];
printf("\nvvedy matrycu a: \n");
for(i=0; i<3; i++)
for(j=0; j<4; j++)
scanf("%d", &a[i]);
printf("\n vvedy matricy b: \n");
for(i=0; i<4; i++)
for(j=0; j<3; j++)
scanf("%d", &b[i]);
for(i=0; i<3; i++)
for(j=0; j<3; j++)
{
c[(i-1)*4+j]=0;
for(k=0; k<4; k++)
c[(i-1)*4+j]=c[(i-1)*4+j]+a[(i-1)*4+k]*b[(k-1)*4+j];
}
printf("\nvyvod matrycy: \n");
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
printf("%d", c[i]);
printf("\n");
}
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.06.2011, 16:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос И снова у меня ошибка в коде (C++):

Почему у меня ошибка в коде? - C++
Вот код: #include &lt;iostream&gt; using namespace std; int main() { int n; cout&lt;&lt;&quot;Vvedi nomer misyaca.\n&quot;; cin&gt;&gt;n; ...

у меня ошибка в коде проверьте!!! - C++
Определить максимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы 1) произведения элементов в тех строках,...

Неизвестная (для меня) ошибка в коде! - C++
Выпадает вот такая ошибка в коде программы: Вот код: #include &lt;iostream&gt; #include &lt;cmath&gt; using namespace...

Ошибка в коде или компилятор не понимает меня? - C++
Добрый день. Изучаю, с недавнего времени, с++ по книге Джесса Либерти &quot;С++ за 21 день&quot;. Использую компилятор Dev-C++. И как ни странно...

Что такое перегрузка оператора? Что у меня в коде за ошибка? - C++
Что же я написал?? Что оно не компилится? Что значит error C2275: Superclass: недопустимое использование этого типа в качестве выражения ...

пример на файлы. у меня в коде есть ошибки, но я не знаю, как их исправить - C++
по заданному списку фамилий напечатать каждому упомянутому в списке поздравление к определенному празднику. чтобы избежать шаблона,...

13
co6ak
Кошковед
408 / 501 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
20.06.2011, 17:03 #2
эм.. а зачем брать одномерный массив и усложнять себе жизнь?
ну сказали так сказали.
хотя жестоко.

A[m][n] * B[n][m] = c[n][n] если мне не изменяет память.


можно формулу умножения матриц? а то искать лень

и эта... судя по коду матрицы не 3х4 а 4х5...
0
Rikk
45 / 5 / 1
Регистрация: 10.06.2011
Сообщений: 265
20.06.2011, 17:13  [ТС] #3
Цитата Сообщение от co6ak Посмотреть сообщение
а зачем брать одномерный массив
ну по заданию надо ж реализовать прогу в одномерном массиве

Добавлено через 7 минут
Цитата Сообщение от co6ak Посмотреть сообщение
можно формулу умножения матриц? а то искать лень
в одномерном массив чтобы вывести вот какую нам формулу дали
L=(i-1)*k+j

Добавлено через 36 секунд
Цитата Сообщение от co6ak Посмотреть сообщение
и эта... судя по коду матрицы не 3х4 а 4х5...
Да ладно?
0
co6ak
Кошковед
408 / 501 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
20.06.2011, 17:14 #4
и тем не менее моно формулу?)

а вот не ладно.
20 элементов - 4 * 5.
в с[16] - ибо 4 * 4 .
0
Rikk
45 / 5 / 1
Регистрация: 10.06.2011
Сообщений: 265
20.06.2011, 17:19  [ТС] #5
вроде бы
c[i][j]=a[i][k]*b[k][j]+c[i][j]

Добавлено через 1 минуту
Цитата Сообщение от co6ak Посмотреть сообщение
20 элементов - 4 * 5
точно, блин а я уже считать плохо стал
0
co6ak
Кошковед
408 / 501 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
20.06.2011, 17:42 #6
C++
1
2
3
4
for (int i = 0; i < 3; i++)
    for (int j = 0; j < 4; j++)
        for ( int k = 0; k < 3; k++)
            c[i*3 + i] += a[j*4 + k] + b[3*j+k];
искринне надеюсь что посчитал правильно. конец рабочего дня. башка не варит уже.

херня какаята. если будет актуально - вечером или завтра доделаю ))
1
Rikk
45 / 5 / 1
Регистрация: 10.06.2011
Сообщений: 265
20.06.2011, 17:51  [ТС] #7
Цитата Сообщение от co6ak Посмотреть сообщение
онец рабочего дня. башка не варит уже
да понимаю...
хах завтра экзамен уже, это последнее задание осталось прорешать
Цитата Сообщение от co6ak Посмотреть сообщение
херня какаята
ага тож меня что то массив получившийся смутил
0
co6ak
Кошковед
408 / 501 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
20.06.2011, 17:57 #8
кажись понял ))
C++
1
2
3
4
for (int i = 0; i < 3; i++)
        for (int j = 0; j < 3; j++)
                for ( int k = 0; k < 4; k++)
                        c[i*3 + j] += a[k + 4*i] + b[3*k + j];
0
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
20.06.2011, 17:58 #9
Цитата Сообщение от Rikk Посмотреть сообщение
c[i][j]=a[i][k]*b[k][j]+c[i][j]
Чего-чего? Вы что понаписывали, для начала почитайте как умножать две матрицы, а потом садитесь за реализацию.
http://ru.wikipedia.org/wiki/Умножение_матриц
0
Rikk
45 / 5 / 1
Регистрация: 10.06.2011
Сообщений: 265
20.06.2011, 18:00  [ТС] #10
Цитата Сообщение от Gepar Посмотреть сообщение
почитайте как умножать две матрицы
ну у меня в методички написано так
0
co6ak
Кошковед
408 / 501 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
20.06.2011, 18:02 #11
да все там правильно написано.
0
Rikk
45 / 5 / 1
Регистрация: 10.06.2011
Сообщений: 265
20.06.2011, 18:04  [ТС] #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
29
30
31
#include<stdio.h>
int main()
{
int i, j, k, a[12], b[12], c[9];
printf("\nvvedy matrycu a: \n");
for(i=0; i<3; i++)
for(j=0;j<4;j++)
scanf("%d", &a[i]);
printf("\n vvedy matricy b: \n");
for(i=0; i<4; i++)
for(j=0; j<3; j++)
scanf("%d", &b[i]);
 
{
c[i*3 + j]=0;
for (i = 0; i < 3; i++)
    for (j = 0; j < 3; j++)
        for ( k = 0; k < 4; k++)
                        c[i*3 + j] += a[k + 4*j] + b[3*k + j];
 
 
}
printf("\nvyvod matrycy: \n");
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
printf("%d", c[i]);
printf("\n");
}
return 0;
}
0
co6ak
Кошковед
408 / 501 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
20.06.2011, 18:08 #13
ммм..
у тебя ввод массива кривой.
ты вводишь только
C++
1
2
3
for(i=0; i<3; i++)
for(j=0;j<4;j++)
scanf("%d", &a[i]);
надо &a[3*i + j]
так же поменять в b - &b[i*4 + j]

опять же поменять вывод c[i*3 + j]


и удаляй 14, 15 и 22 строки
1
Rikk
45 / 5 / 1
Регистрация: 10.06.2011
Сообщений: 265
20.06.2011, 18:18  [ТС] #14
Цитата Сообщение от co6ak Посмотреть сообщение
удаляй 14, 15 и 22 строки
я их удалил и у меня минусы появились
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.06.2011, 18:18
Привет! Вот еще темы с ответами:

почему то первый в этом коде у меня не нулевой элемент а идет по порядку все - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &quot;conio.h&quot; #include &quot;locale.h&quot; #define countof(array) (sizeof(array) /...

Как сделать чтобы таймер дойдя до 0 стартовал снова и снова? - C++
Здравствуйте :) Как сделать чтобы таймер дойдя до 0 стартовал снова и снова? TimerSec = 59; TimerMin = 6; for(int i = TimerSec;...

Найти ошибку в коде, он у меня матрицу должен вывести и колличество положительных элементов но рандомом он только 0 выходит почему? - C++
#include &lt;iostream&gt; #include &lt;cmath&gt; #include &lt;ctime&gt; using namespace std; int main(){ int a; int b; int i = 0,j = 0; ...

У меня ошибка? Поможете - C++
int __fastcall TZash::LoadCharSet(const String&amp; sInput) { if (sInput.Length() &lt; 2) return 0; String sTemp = sInput; ...


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

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

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