Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.01.2012, 12:52   #1
ms_bolyan
 
Регистрация: 23.01.2012
Сообщений: 4
Вопрос функция вывода матрицы не работает.С++

доброго всем времени суток!не как не разберусь в чем состоит ошибка, суть в общем такая: дана матрица, с ней нужно проделать некоторые действия ну и соответственно ее вывести, я написал функцию для вывода этой матрицы, а она выдает ошибку, вроде бы все просто, а что не так не разберусь.
Код:
#include <iostream>
#include <iomanip>

using namespace std;
// прототип функции для вывода матрицы
void outputm(double** A, int m, int n);

int const m = 3;
int const n = 4;

int main()
{
    double MATR[m][n] = {
                         {11.8, 35.6, 7.35, 3.2},
                         {-12, 24.3, 68.1, -8.4},
                         {21.6, 15.2, -13.3, -8.25}
                        };

 outputm(MATR, m, n);//КОМПЕЛЯТОР РУГАЕТСЯ НА ЭТУ СТРОКУ
   
   
    cin.get();
    return 0;
}
void outputm(double** A, int x, int y)
{
     // объявляем переменные
     int i, j;
     // выделение оперативной памяти под матрицу
     A = new double*[n];
     if(A == NULL)
     {cout << "\n не хватило ОП";
     exit(1);
     }
     // выделяем оперативную память под столбцы матрицы А
     for(i = 0; i < n; i++)
     A[i] = new double[m];
     if(A[i] == NULL)
     {
      cout << "\n не хватило ОП";
      exit(1);
     }
     // вывод матрицы
     for(i = 0; i < x; i++)
     {
           for(j = 0; j < y; j++)
           cout << setw(10) << A[i][j];
           cout << endl;
     }
}
КОД ОШИБКИ:cannot convert `double (*)[4]' to `double**' for argument `1' to `void outputm(double**, int, int)'

ЗАРАНЕЕ БЛАГОДАРЕН ЗА ПОМОЩЬ!!!
ms_bolyan вне форума Ответить с цитированием
Старый 23.01.2012, 13:37   #2
arrowsf1
Пользователь
 
Аватар для arrowsf1
 
Регистрация: 22.01.2012
Сообщений: 97
По умолчанию

do you think that it is simple?
Модераторам: не баньте, у мя такие полезные советы, они стоющие
arrowsf1 вне форума Ответить с цитированием
Старый 23.01.2012, 13:45   #3
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

А не могли бы Вы, arrowsf1, прекратить флудить везде и всюду? Прям в каждой бочке затычка.

Ошибка связана с указателями, может из-за этих строк:
Код:
void outputm(double** A, int x, int y)
Код:
 A = new double*[n];
Код:
 A[i] = new double[m];
?
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 23.01.2012, 13:48   #4
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

У тебя массив статический. Так и передавай его как статический и не заморачивайся с выделением памяти в подпрограмме. В этом случае это лишнее.
Кроме того, нет смысла передавать размерность матрицы в функцию -- она у тебя объявлена двумя глобальными константами.
Итого:
Код:
#include <iostream>
#include <iomanip>

using namespace std;

int const m = 3;
int const n = 4;

void outputm(double A[][n]);

int main()
{
    double MATR[m][n] = {
                         {11.8, 35.6, 7.35, 3.2},
                         {-12, 24.3, 68.1, -8.4},
                         {21.6, 15.2, -13.3, -8.25}
                        };

    outputm(MATR);
    cin.get();
    return 0;
}

void outputm(double A[][n])
{
    for(int i = 0; i < m; i++)
    {
        for(int j = 0; j < n; j++)
            cout << setw(10) << A[i][j];
        cout << endl;
    }
}
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 23.01.2012, 15:11   #5
ms_bolyan
 
Регистрация: 23.01.2012
Сообщений: 4
По умолчанию

да спасибо это вполне подходит, но матрица так и не выводиться
ms_bolyan вне форума Ответить с цитированием
Старый 23.01.2012, 15:13   #6
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Цитата:
Сообщение от ms_bolyan Посмотреть сообщение
да спасибо это вполне подходит, но матрица так и не выводиться
отнюдь.
http://ideone.com/0ZjbP
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 23.01.2012, 15:25   #7
ms_bolyan
 
Регистрация: 23.01.2012
Сообщений: 4
По умолчанию

вот посмотрите
Изображения
Тип файла: jpg вывод.jpg (74.1 Кб, 145 просмотров)
ms_bolyan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна функция вывода спрайта ALKOrobot Gamedev - cоздание игр: Unity, OpenGL, DirectX 3 30.10.2011 17:53
Нужна функция(Макрос) для вывода номеров и категорий в таблице alexp21 Microsoft Office Excel 4 26.09.2011 23:32
Функция для вывода на дисплей целых чисел. alex_8 Помощь студентам 3 24.05.2010 15:59
Матрицы:функция изменения порядка столбцов матрицы Fajyz Помощь студентам 0 13.01.2010 09:40
(паскаль) Обработка кв. матрицы. Программа есть. Не корректно работает функция SUM.. aslanbek999 Помощь студентам 3 02.06.2009 19:51