291 / 239 / 102
Регистрация: 07.04.2011
Сообщений: 1,433
1

Двумерный динамический массив и запись в него

18.12.2014, 19:26. Показов 703. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток.Проблема с записью в двумерный динамический массив
Чтение производиться из файла с разделителями.
Структура файла:
Кликните здесь для просмотра всего текста
&;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21
2350400001;&;2360500002;2360500003;2360500004;2360500005;2360500006;2360500007;2 360500008;2360500009;2360500010;2360500011;2360500012;2360500013;2360500014;2360 500015;2360500016;2360500017;2360500018;2360500019;2350400001
1;2;&;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21
ОС;ОС;ОС;&;ОС;ОС;ОС;ОС;ОС;ОС;ОС;ОС;ОС;ОС;ОС;ОС;ОС;ОС;ОС;ОС;ОС
2350;2351;2352;2353;2354;2355;2356;2357;2358;2359;2360;2361;2362;2363;2364;2365; 2366;2367;2368;2369;2370
шт;шт;шт;шт;шт;&;шт;шт;шт;шт;шт;шт;шт;шт;шт;шт;шт;шт;шт;шт;шт
Ф;Ф;Ф;Ф;Ф;Ф;Ф;Ф;Ф;Ф;Ф;Ф;Ф;Ф;Ф;Ф;Ф;Ф;Ф;Ф;Ф
И;И;И;И;И;И;И;И;И;И;И;И;И;И;И;И;И;И;И;И;И
О;О;О;О;О;О;О;О;О;О;О;О;О;О;О;О;О;О;О;О;О
69030,00;69030,00;69030,00;69030,00;69030,00;69030,00;69030,00;69030,00;69030,00 ;&;69030,00;69030,00;69030,00;69030,00;69030,00;69030,00;69030,00;69030,00;69030 ,00;69030,00;69030,00
0,00;0,00;0,00;0,00;0,00;0,00;0,00;0,00;0,00;0,00;&;0,00;0,00;0,00;0,00;0,00;0,0 0;0,00;0,00;0,00;0,00
15,00;25,00;25,00;25,00;25,00;25,00;25,00;25,00;25,00;25,00;25,00;&;25,00;25,00; 25,00;25,00;25,00;25,00;25,00;25,00;15,00

В файле,как видно из структуры,в данном примере - 12 столбцов и 21 строка.Причем количество строк всегда равно 12!,а количество столбцов может меняться.
Выделяю память.Правильно выделение для 12 строк и 21 столбца?:
C++
1
2
3
4
5
6
7
int Count =21;
char **FileArrData = new char *[12];//выделить память строки
 
for (i = 0; i < Count; i++)
 {
     FileArrData[i] = new char [Count];//столбцы
 }
Чтение из файла(с учетом разделителей):
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
j=-1;
 i=0;
 
 while (!TempFile.eof())//начало чтения файла
{
    TempFile.getline(buff,255);
 
    cout << buff << " " << endl;
 
    buffdelim = std::strtok(buff,Delimetrs);
 
     while(buffdelim)
     {
         j++;
 
            cout << "J:" <<j <<":";
 
             cout << buffdelim << endl;
 
            strcpy(FileArrData[i][j],buffdelim);//тут вопрос
 
         buffdelim  = strtok(NULL, Delimetrs);  
      }
     j=0;//сброс счетчика
     i++;
}//конец чтения файла
Каким образом мне в массив записать значения,которые содержаться в момент чтения в buffdelim?Чтобы индексу [0][0] соответствовало значение из файла в строке 1,столбце 1 = &.[0][2] = 2360500002.и тд.
Если объявляю строку так:
C++
1
strcpy(FileArrData[i][j],buffdelim)
то ругается на FileArrData - аргумент типа "char" не совместим с параметром "char*".
В чем ошибка?
Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.12.2014, 19:26
Ответы с готовыми решениями:

Двумерный динамический массив
Выскакивает ошибка Ошибка C2440 =: невозможно преобразовать &quot;int *&quot; в &quot;int...

Динамический двумерный массив
Здравствуйте, начал недавно учить с++, смотрю видеоуроки. Дошел до этой темы и столкнулся с...

Динамический двумерный массив
Если число находится в интервале от 100 до 110, то используя подпрограмму, в матрицах Р(N,M),...

Двумерный Динамический массив
Здравствуйте, такая проблема: не могу задать int** и char**...проблема в том что в функцию...

4
7785 / 6553 / 2983
Регистрация: 14.04.2014
Сообщений: 28,621
18.12.2014, 19:44 2
Правильно с точки зрения синтаксиса так:
C++
1
strcpy(FileArrData[i], buffdelim)
Но, здесь двумерный массив не подойдёт. У тебя же разные элементы в строках.

Добавлено через 5 минут
Нужно 12 двумерных массивов по числу строк в файле.

Добавлено через 47 секунд
Используй лучше массив из vector<string>.
1
291 / 239 / 102
Регистрация: 07.04.2011
Сообщений: 1,433
18.12.2014, 19:55  [ТС] 3
Цитата Сообщение от nmcf Посмотреть сообщение
Но, здесь двумерный массив не подойдёт.У тебя же разные элементы в строках.
Не совсем понял.Тип данных разный?int,float,char?Массив типа Char - какие данные в нем разницы же нет?Или я что-то недопонимаю?
Цитата Сообщение от nmcf Посмотреть сообщение
Нужно 12 двумерных массивов по числу строк в файле.
тогда можно объявить 12 динамических одномерных массивов и в каждый передавать свою строку из файла по порядку?Мой объявленный "двумерный динамический массив" не очень-то какой-то двумерный)Походу не совсем понимаю смысл двумерных массивов!
Цитата Сообщение от nmcf Посмотреть сообщение
Используй лучше массив из vector<string>.
Последующая обработка массива уже написана.Не хотелось бы переделывать все!
0
7785 / 6553 / 2983
Регистрация: 14.04.2014
Сообщений: 28,621
18.12.2014, 20:11 4
Двумерный массив char - это по сути список, набор строк. А у тебя каждая строка - набор. Т. е. чтобы описать всю структуру, нужен трёхмерный массив или 12 двухмерных.

Добавлено через 51 секунду
А лучше использовать STL.
1
291 / 239 / 102
Регистрация: 07.04.2011
Сообщений: 1,433
18.12.2014, 20:34  [ТС] 5
Цитата Сообщение от nmcf Посмотреть сообщение
Двумерный массив char - это по сути список, набор строк. А у тебя каждая строка - набор. Т. е. чтобы описать всю структуру, нужен трёхмерный массив или 12 двухмерных.
Добавлено через 51 секунду
А лучше использовать STL.
Спасибо,понятно.Хотелось как лучше и проще,а придется все переписывать)
0
18.12.2014, 20:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.12.2014, 20:34
Помогаю со студенческими работами здесь

Вывести четные элементы матрицы
Здравствуйте, задание такое: &quot;Описать двумерный массив R целых чисел, размерностью NхM элементов,...

Двумерный динамический массив
Необходимо ввести с клавиатуры количество строк и столбцов массива(матрица размером N*M), ввести...

Двумерный динамический массив
Здравствуйте, подскажите пожалуйста где ошибка? реализовал 2 фукнции ввода и вывода массива....

Двумерный массив (поменять статический массив на динамический)
Нужно поменять статический массив на динамический с выделением памяти #include &lt;iostream&gt;...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru