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

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

Войти
Регистрация
Восстановить пароль
 
Krasiosoft
51 / 51 / 15
Регистрация: 01.06.2015
Сообщений: 189
#1

Статическое объявление матрицы - C++

06.07.2015, 04:33. Просмотров 940. Ответов 7
Метки нет (Все метки)

Здравствуйте.

у меня есть матрица А:
C++
1
2
3
4
5
6
    int n, m;
    cout<<"n = ";
    cin>>n;
    cout<<"m = ";
    cin>>m;
    double A[n][m];
Как описать функцию, чтоб в нее можно было передать эту матрицу? И корректно ли так объявлять матрицу?

Заранее благодарен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.07.2015, 04:33
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Статическое объявление матрицы (C++):

Объявление матрицы в классе - C++
Доброго времени суток. Захотел объявить и инициализировать матрицу в классе, и вывести определенные строки и столбцы. Но я с объявлением не...

Объявление и инициализация динамической матрицы - C++
Ребят, только начал разбираться с матрицой. примерно я знаю как написать матрицу, но не знаю как написать динамическую матрицу, и чтоб...

Статическое поле - C++
Помогите с такой проблемой. Программа нормально компилится, но возвращается, вот такая ошибка при объявлении статического поля,...

Статическое приведение типов - C++
Здравствуйте! Помогите пожалуйста разобраться со следующим кодом. #include &lt;iostream&gt; using namespace std; class Item { ...

Статическое подключение DLL - C++
Хочу подключить dll в файл при компиляции в VC++ Project -&gt; Settings... -&gt; Вкладка General -&gt; раскрываемый список Microsoft foundation...

Динамическое и статическое выделение памяти - C++
Добрый вечер. Если участок программы допускает создание некоего объекта и статически, и динамически, то какой способ лучше использовать? ...

7
zss
Модератор
Эксперт С++
6873 / 6435 / 2153
Регистрация: 18.12.2011
Сообщений: 16,922
Завершенные тесты: 1
06.07.2015, 04:41 #2
Как раз так статическую матрицу объявлять нельзя (n,m должны быть константами).
Образец с переменными значениями n,m см. тут:
Образцы (шаблоны) программ для типовых задач
Если все же остановитесь на константах, то
C++
1
2
const int N=5, M=5;
double A[N][M];
И пример функции
C++
1
2
3
4
5
6
7
8
9
10
11
//
//---- ввод матрицы--------------------------------------
//
void Input( int M[N][M], size_t n, size_t m ) {
    for ( size_t i = 0; i < n; ++i ) {
        for ( size_t j = 0; j < m; ++j ) {
            std::cout << "M[" << i << "][" << j << "] = ";
            std::cin >> M[i][j];
        }
    }
}
1
Krasiosoft
51 / 51 / 15
Регистрация: 01.06.2015
Сообщений: 189
06.07.2015, 05:02  [ТС] #3
zss, спасибо, я в курсе этого.
Интересует именно такой тип объявления. Дело в том, что компилятор не ругается и все работает корректно. А вот передать в функцию не могу.
0
zss
Модератор
Эксперт С++
6873 / 6435 / 2153
Регистрация: 18.12.2011
Сообщений: 16,922
Завершенные тесты: 1
06.07.2015, 05:19 #4
Такой вариант возможен только начиная с версии С++11.
Лучше его не использовать.
0
DrOffset
7517 / 4513 / 1024
Регистрация: 30.01.2014
Сообщений: 7,362
06.07.2015, 05:38 #5
Цитата Сообщение от zss Посмотреть сообщение
Такой вариант возможен только начиная с версии С++11.
В С++11 такой вариант тоже невозможен.
Такой вариант возможен только в GCC, благодаря поддержке VLA, заимствованной из С99.
Подробности про GCC.
1
Krasiosoft
51 / 51 / 15
Регистрация: 01.06.2015
Сообщений: 189
06.07.2015, 16:09  [ТС] #6
Цитата Сообщение от DrOffset Посмотреть сообщение
В С++11 такой вариант тоже невозможен.
Такой вариант возможен только в GCC, благодаря поддержке VLA, заимствованной из С99.
Подробности про GCC.
Очень странно, сделал как описано в GCC VLA:

C++
1
2
3
void tester (int len, char data[len][len])
{
}
Выдает ошибку:
use of parameter 'len' outside function body
void tester (int len, char data[len][len])
________________________ ^
А если сделать так:

C++
1
2
3
void tester (int len; char data[len][len], int len)
{
}
То ошибка:
expected ')' before ';' token
tester (int len; char data[len][len], int len)
__________ ^
0
Tulosba
:)
Эксперт С++
4705 / 3240 / 297
Регистрация: 19.02.2013
Сообщений: 9,046
06.07.2015, 22:24 #7
Цитата Сообщение от Krasiosoft Посмотреть сообщение
Очень странно
Просто это для сишного кода надо проверять, а не для плюсового:
http://ideone.com/RP68bZ
0
Nkey
308 / 61 / 10
Регистрация: 21.12.2011
Сообщений: 285
Завершенные тесты: 2
07.07.2015, 04:21 #8
Делайте динамическую матрицу, и затем указывайте размер какой нужен.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.07.2015, 04:21
Привет! Вот еще темы с ответами:

Статическое связывание параметров методов - C++
Добрый день! В коде (представлен ниже) сделал оболочки для константной и простой ссылок. Известно, что в функции, которая ожидает...

Статическое поле,количество экземпляров класса - C++
Помогите понять,статическое поле stcount считает количество созданных экземпляров класса (объектов),я объявляю всего два объекта а он...

Статическое подключение системных DLL-файлов - C++
Добрый вечер, уважаемые форумчане! Ситуация следующая: Я написал программу, все работает так, как мне нужно. С помощью Actual Installer...

Почему метод класса затирает статическое поле - C++
Добрый день :) Я учу самостоятельна с++. Сейчас разбираю тему классы. Вот у меня возник вопрос по коду: #include&lt;iostream&gt; using...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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