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

Двумерный массив как параметр функции - C++

Восстановить пароль Регистрация
 
vvolka
0 / 0 / 0
Регистрация: 11.04.2012
Сообщений: 36
05.06.2012, 20:43     Двумерный массив как параметр функции #1
Есть такая функция, загружающая элементы из бинарного файла в массив
C++
1
bool m1[10][10]
:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void loadfromfile(char *filename, int col, int row) 
{
  FILE *f = NULL;
  f = fopen(filename, "rb");
  for (int j = 0; j < col; j++)
  {
    int result = fread(m1[j], sizeof(m1), sizeof(bool), f);
    fseek(f, 2, SEEK_CUR);
    for (int i = 0; i < row; i++)
    {
      m1[j][i] = m1[j][i] - 48;
    }
  }
  fclose (f);
}
Не получается ее изменить, чтобы использовать 4-тым параметром статический массив другой размерности.
Например,
C++
1
loadfromfile("filename", 5, 5, m2);
.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jazz411
85 / 33 / 3
Регистрация: 12.03.2011
Сообщений: 234
Записей в блоге: 2
06.06.2012, 02:43     Двумерный массив как параметр функции #2
как вариант можно рассмотреть кокой размерности у нас этот 4 параметр если простой массив то
int* mass, 2-й int** mass (причем тот масив на который мы будем указывать является массивом указателей), 3-й int*** mass и т.д.
vvolka
0 / 0 / 0
Регистрация: 11.04.2012
Сообщений: 36
06.06.2012, 09:05  [ТС]     Двумерный массив как параметр функции #3
На примере двух статических массивов m1[10][10], m2[5][5], обясните, пожалуйста...
Jazz411
85 / 33 / 3
Регистрация: 12.03.2011
Сообщений: 234
Записей в блоге: 2
09.06.2012, 08:17     Двумерный массив как параметр функции #4
тут есть 2 варианта, но цель 1
1 вариант:
возьмем для массива m1.
Тебе нужно сделать массив указателей для m1.
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
#include <iostream>
using namespace std;
 
void loadfromfile(char *filename, int col, int row, bool **mass)
{
    // ... Код функции ...
}
 
 
int main(void)
{
    bool m1[10][10] = {0};
 
    bool *mass[10];
    for(int i = 0; i < 10; i++)
    {
        mass[i] = new bool[10];
        for(int j = 0; j < 10; j++)
        {
            mass[i][j] = m1[i][j];
        }
    }
 
    loadfromfile("filename", 5, 5, mass);
 
    system("PAUSE");
    return 0;
}
2 вариан:
возьмем для массива m2.
Тебе нужно сделать динамический 2х мерный массив для m2.
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
#include <iostream>
using namespace std;
 
void loadfromfile(char *filename, int col, int row, bool **mass)
{
    // ... Код функции ...
}
 
 
int main(void)
{
    bool m2[5][5] = {0};
 
    bool **mass = NULL;
 
    mass = new bool*[5];
 
    for(int i = 0; i < 5; i++)
    {
        mass[i] = new bool[5];
        for(int j = 0; j < 5; j++)
        {
            mass[i][j] = m2[i][j];
        }
    }
 
    loadfromfile("filename", 5, 5, mass);
 
    system("PAUSE");
    return 0;
}
Yandex
Объявления
09.06.2012, 08:17     Двумерный массив как параметр функции
Ответ Создать тему
Опции темы

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