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

Функция создающая новую матрицу - C++

Восстановить пароль Регистрация
 
exarion
0 / 0 / 0
Регистрация: 06.04.2011
Сообщений: 8
20.03.2012, 21:18     Функция создающая новую матрицу #1
Нужна функция которая создает новую квадратную матрицу, где элементы вычисляются по формуле
B[i][j]=1/(i+j-1) Не уверен правильно ли функция возвращает значение. И еще нужно вывести получившуюся матрицу в main-e. Помогите найти ошибку и правильно вывести новую матрицу.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
double createB(int n)
 {
 int i,j;
 double **B;
 B=new double *[n];
 for(i=0; i<n;i++)
 {
 B[i]=new double[n];
 }
 for(i=0;i<n;i++)
 for(j=0;j<n;j++)
 B[i][j]=1/(i+j-1); //не хочет работать если есть знак деления
 return **B;
 }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.03.2012, 21:18     Функция создающая новую матрицу
Посмотрите здесь:

C++ Создать новую матрицу
C++ Получить новую матрицу
Получить новую матрицу из данной C++
Получить новую матрицу путем сложения C++
Вычислить новую матрицу по формуле C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rexer
 Аватар для Rexer
151 / 150 / 19
Регистрация: 10.10.2010
Сообщений: 691
20.03.2012, 21:22     Функция создающая новую матрицу #2
double createB(int n)
эта строчка говорит,что функция возвращает число типа double
return **B;
а тут вы возвращаете массив указателей.
Тогда уж
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
double ** createB(int n)
 {
 int i,j;
 double **B;
 B=new double *[n];
 for(i=0; i<n;i++)
 {
 B[i]=new double[n];
 }
 for(i=0;i<n;i++)
 for(j=0;j<n;j++)
 B[i][j]=1/(i+j-1); //не хочет работать если есть знак деления
 return **B;
 }
exarion
0 / 0 / 0
Регистрация: 06.04.2011
Сообщений: 8
20.03.2012, 21:31  [ТС]     Функция создающая новую матрицу #3
Цитата Сообщение от Rexer Посмотреть сообщение
Тогда уж

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
double ** createB(int n)
 {
 int i,j;
 double **B;
 B=new double *[n];
 for(i=0; i<n;i++)
 {
 B[i]=new double[n];
 }
 for(i=0;i<n;i++)
 for(j=0;j<n;j++)
 B[i][j]=1/(i+j-1); //не хочет работать если есть знак деления
 return **B;
 }
Не работает.
Поменял на return B; - заработало.
Но осталась проблема с делением(12 строка). Выдает devide error. Если меняю с деления на сложение - все отлично.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
20.03.2012, 22:04     Функция создающая новую матрицу #4
Потому что на ноль делить нельзя.
exarion
0 / 0 / 0
Регистрация: 06.04.2011
Сообщений: 8
20.03.2012, 22:07  [ТС]     Функция создающая новую матрицу #5
точно! не обратил внимание!
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,161
Завершенные тесты: 1
20.03.2012, 22:10     Функция создающая новую матрицу #6
Еще одна распространенная ошибка.
1/(i+j-1) равно нулю для любых i+j>2, т.к. целое делится на целое
исправьте на
1.0/(i+j-1)
Rexer
 Аватар для Rexer
151 / 150 / 19
Регистрация: 10.10.2010
Сообщений: 691
21.03.2012, 10:19     Функция создающая новую матрицу #7
ай,не стер две звезды в конце,когда постил пост!
Извините.
Мы же возвращаем массив указателей,а если оставить звезды,то возвращаем значение B[0][0].
Или можно еще так,чтобы не писать 1.0,а задать явное преобразование
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
double ** createB(int n)
 {
 int i,j;
 double **B;
 B=new double *[n];
 for(i=0; i<n;i++)
 {
 B[i]=new double[n];
 }
 for(i=0;i<n;i++)
 for(j=0;j<n;j++)
 B[i][j]=(double)1/(i+j-1); //обратите внимание
 return B;
 }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.03.2012, 11:45     Функция создающая новую матрицу
Еще ссылки по теме:

C++ Получить новую матрицу
Получить новую матрицу переставляя ее блоки C++
C++ Функция, принимающая матрицу, возвращающая матрицу

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

Или воспользуйтесь поиском по форуму:
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,161
Завершенные тесты: 1
21.03.2012, 11:45     Функция создающая новую матрицу #8
Цитата Сообщение от Rexer Посмотреть сообщение
Или можно еще так,чтобы не писать 1.0,а задать явное преобразование
Оно, конечно, можно. Но Вы заставляете компилятор завести целую константу и вставить код,
преобразующий ее в действительное число.
Yandex
Объявления
21.03.2012, 11:45     Функция создающая новую матрицу
Ответ Создать тему
Опции темы

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