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

Массив, объявленный как двумерный, является одномерным - C++

Восстановить пароль Регистрация
 
WarAngel-alk
0 / 0 / 0
Регистрация: 01.02.2013
Сообщений: 25
17.03.2013, 11:22     Массив, объявленный как двумерный, является одномерным #1
Сабж в теме. Объявляю двумерный массив 5х5 строкой
C++
1
float mas[5][5];
Затем заполняю его данными с клавиатуры. При компиляции ошибок никаких, но во время дебага тип массива определяется как float[5]*. Притом, с массивом curM, объявленным аналогично в функции det все нормально - двумерный, как и положено.

Код
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
#include "stdafx.h"
 
using namespace std;
 
float det(float mas[5][5], int n, int m, int x, int y);
 
int main()
{
    int n, m;
    float mas[5][5];    // Объявление двумерного массива
 
    cout << "Type m and n\n";
    cin >> n >> m;
 
 
    cout << "Type matrix\n";
    for(int i = 0; i < n; ++i){
        for(int j = 0; j < m; ++j){
            cin >> mas[i][j];
        }
    }
 
    cout << "Det of this matrix is " << det(mas, n, m, -1, -1);
    getch();
}
 
float det(float mas[5][5], int n, int m, int x, int y)
{
    float curM[5][5] = {0};
    float res = 0;
 
    for(int i = 0; i < m; ++i){
        for(int j = 0; j < n; ++j){
            if((n != x) && (m != y)){
                curM[i][j] = mas[i][j];
            }
        }
    }
 
    if((n > 1) && (m > 1)){
        for(int i = 0; i < n; ++i){
 
            res += pow(-1.0, i) * det(curM, n - 1, m - 1, i, 0);
        }
        return res;
    }
    else{
        return curM[0][0];
    }
}
Миниатюры
Массив, объявленный как двумерный, является одномерным  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.03.2013, 11:22     Массив, объявленный как двумерный, является одномерным
Посмотрите здесь:

Указатель на классы, объявленный как член класса C++
C++ КАК СРАВНИВАТЬ ДВУМЕРНЫЙ МАССИВ??
C++ двумерный массив, как?
C++ Определить является ли двумерный массив логическим квадратом
Является ли двумерный массив симметричным относительно главной диагонали C++
C++ Объявленный класс не воспринимается как тип
C++ Написать функцию, которая по двум заданным одномерным массивам вычисляет двумерный массив и возвращает его максимальный элемент
Массив BYTE, объявленный вне процедуры заполняется, внутри нет C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.03.2013, 12:56     Массив, объявленный как двумерный, является одномерным #2
Цитата Сообщение от WarAngel-alk Посмотреть сообщение
но во время дебага тип массива определяется как float[5]*
Как передаёте массив в функцию (указатель на начало массива указателей на 5 float), так отладчик его и показывает. Вы же при заходе в функцию это видите? В main() отладчик покажет: mas: float [5][5];
Yandex
Объявления
17.03.2013, 12:56     Массив, объявленный как двумерный, является одномерным
Ответ Создать тему
Опции темы

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