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

Indefenid Direction (не пойму ошибки) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Работа с файлом http://www.cyberforum.ru/cpp-beginners/thread35838.html
Здравствуйте, помогите решить задачу на С, а то я с файлами вообще никак. Прочитать файл, который может содержать символы перевода строки. Для каждой строки определить и вывести на экран её номер и...
C++ Ошибка библиотеки graphics.h в Code::Blocks Всем привет! Я работаю в CodeBlock когда пишу #include<graphics.h> все время выдает ошибку. Подскажите пожалуйста в чем дело! http://www.cyberforum.ru/cpp-beginners/thread35834.html
Максимальный елемент массива C++
Программа неправильно находит максимальный елемент. И иногда при генерации нового массива просто закрывается сама. Что здесь не так? Немогу найти ошибку. #include <iostream.h> #include...
BSCMAKE: error BK1506 : cannot open file '.\Debug\RESDlg.sbr': No such file or directory C++
--------------------Configuration: RES - Win32 Debug-------------------- Compiling... RESDlg.cpp c:\program files\microsoft visual studio\myprojects\res\resdlg.cpp(197) : fatal error C1010:...
C++ Задача по одномерному массиву http://www.cyberforum.ru/cpp-beginners/thread35802.html
Всем привет. Помогите пожалуйста написать программу для с++ нужно осуществить: 1.ввод символьного массива от 40 до 60 2.подсчёт кол-ва элементов массива и вывод его на экран 3.нахождение...
C++ Структура, координаты точек, расстояние между ними. Доброе время суток. Если можете, помогите найти ошибку. Заранее благодарю. Задача. Найти такую точку пространства, сумма расстояний от которой которой до остальных точек множества минимальна. ... подробнее

Показать сообщение отдельно
Monte-Cristo
2794 / 1380 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
23.05.2009, 10:41
потому что, матрица, как правило, создается так:

C++
1
2
double** Matr = new double*[m]; // m - кол-во строк
for (int i=0; i<m; i++) Matr[i] = new double[n]; // n - кол-во столбцов
Добавлено через 37 секунд
Цитата Сообщение от Oksana_Ksu Посмотреть сообщение
А как тогда сделать,чтобы функция была и для одномерного и для двухмерного массива?
использовать тип double**

Добавлено через 11 минут 41 секунду
вот приблизительный код:
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include <ctime>
#include <cstdlib>
#include <iostream>
using namespace std;
 
void MatrixMultiply(double** Result, double** A, double** B, int m1, int n1, int n2);
 
int main()
{
   double** Res;
   double** A;
   double** B;
 
   int m1 = 2; // кол-во строк первой матрицы
   int n1 = 2; // кол-во столбцов первой матрицы
 
   int m2 = n1; // кол-во строк второй матрицы
   int n2 = 2; // кол-во столбцов второй матрицы
 
   // создаем матрицы
   A = new double*[m1];
   for (int i=0; i<m1; i++) A[i] = new double[n1];
 
   B = new double*[m2];
   for (int i=0; i<m2; i++) B[i] = new double[n2];
 
   Res = new double*[m1];
   for (int i=0; i<m1; i++) Res[i] = new double[n2];
 
   // заполянем случ. числами
   srand(time(0));
   for (int i=0; i<m1; i++)
   {
      for (int j=0; j<n1; j++)
      {
         cout.width(3);
         A[i][j] = rand()%4+1;
         cout << A[i][j];
      }
      cout << endl;
   }
   cout << endl;
 
   for (int i=0; i<m2; i++)
   {
      for (int j=0; j<n2; j++)
      {
         cout.width(3);
         B[i][j] = rand()%4+1;
         cout << B[i][j];
      }
      cout << endl;
   }
   cout << endl;
 
   // выводим на экран и вычисляем
   MatrixMultiply(Res, A, B, m1, n1, n2);
 
   for (int i=0; i<m1; i++)
   {
      for (int j=0; j<n2; j++)
      {
         cout.width(3);
         cout << Res[i][j];
      }
      cout << endl;
   }
   cout << endl;
 
   // чистим за собой
   for (int i=0; i<m1; i++) delete[] A[i];
   for (int i=0; i<m2; i++) delete[] B[i];
   for (int i=0; i<m1; i++) delete[] Res[i];
 
   delete[] A;
   delete[] B;
   delete[] Res;
 
   return 0;
}
 
void MatrixMultiply(double** Result, double** A, double** B, int m1, int n1, int n2)
{  
   for (int i=0; i<m1; i++)
   {
      for (int z=0; z<n2; z++)
      {
         double sum=0;
         for (int j=0; j<n1; j++)
            sum += A[i][j]*B[j][z];
         Result[i][z] = sum;
      }
   }
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru