Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Создание двумерного массива


Автор: Weman 11.2.2006, 15:53
Подскажите как осуществить следующее:
На экран выводится сообщение: "Введите количество строк в матрице"(заносим например в переменную row). Пользователь вводит целое число. Далее выводится сообщение "Введите количество столбцов в матрице" ( заносим в col).Тоже вводим. И по этим данным надо создать двумерный массив

int name[row][col]

Код приводите лучше на Си

Автор: Aveic 11.2.2006, 16:44
Код

    typedef int* row_t;  //тип строки таблицы
    row_t* name=new row_t[row];   //создание строк
    for(int k=0; k<row; k++)
             name[k]=new int[col];   //инициализация строк столбцами

Можно легко проверить этот массив, например:
Код

//проверка
    for(int i=0; i<row; i++)
    {
        for(int j=0; j<col; j++)
        {
            name[i][j]=i+j;
            std::cout<<name[i][j]<<" ";
        }
        std::cout<<"\n";
    }

Не задудь потом delete[] для всех строк и столбоцв вызвать!

Автор: Weman 11.2.2006, 18:27
Приведите код пожалуйста на Си

Автор: Aveic 11.2.2006, 19:03
Лол. На.
Код

    int** name=new int*[row];   //создание строк
    for(int k=0; k<row; k++)
             name[k]=new int[col];   //выделение памяти под строки

Теперь как?

Автор: volvo877 11.2.2006, 19:14
Aveic,
new - это С++...

Weman, так пойдет?
Код
typedef int* row_t;
...
row_t* name;
int k, row, col;

name = (row_t *)malloc(row * sizeof(row_t)); //создание строк
for(k=0; k<row; k++)
  name[k] = (int *)malloc(col * sizeof(int)); //выделение памяти под строки


Автор: Aveic 12.2.2006, 00:15
Цитата(volvo877 @ 11.2.2006, 19:14)
Aveic,
new - это С++...

Weman, так пойдет?
Код
typedef int* row_t;
...
row_t* name;
int k, row, col;

name = (row_t *)malloc(row * sizeof(row_t)); //создание строк
for(k=0; k<row; k++)
  name[k] = (int *)malloc(col * sizeof(int)); //выделение памяти под строки

во блин, спс те volvo877, а я думал new - это из C++. Не разу на чистом С не писал, sry. Но идею то я передал правильно )))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)