Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: динамический двумерный массив  (Прочитано 19451 раз)
0 Пользователей и 4 Гостей смотрят эту тему.
CAHTA
Гость
« : 11-09-2005 16:45 » 

как в программе на Си реализовать динамический двухмерный массив?
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 11-09-2005 18:14 » 

Можно реализовать на списках.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
CAHTA
Гость
« Ответ #2 : 11-09-2005 18:19 » 

не. так не пойдет!
нада чтоб был ток чистый С. как я понял, можно это сделать на malloc'e или на calloc'e. но вот как я не пойму
« Последнее редактирование: 20-12-2007 20:55 от Алексей1153++ » Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 11-09-2005 18:25 » 

есть ещё realloc для изменения размера выделенной памяти
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
CAHTA
Гость
« Ответ #4 : 11-09-2005 18:32 » 

эт я знаю! как сделать одномерный динамический массив. эт понятно , а вот как двухмерный . хз.
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 11-09-2005 18:41 » new

realloc() гарантирует сохранность данных при увеличении блока памяти, но может изменить его адрес.

Цитата
не. так не пойдет!
нада чтоб был ток чистый С.
CAHTA, задумайся, что есть "чистый С" и какое к этому имеют отношение списки?

Медитация к программированию не относится...
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
CAHTA
Гость
« Ответ #6 : 11-09-2005 18:54 » 

млин! вот что я замутил!
int **arr = (int*)calloc(str,sizeof(int));
for( U = 0 ; U < str ; U++ ) arr = (int*)calloc(stl,sizeof(int));

ток мне ошибки выдается почемуто Жаль
Записан
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 11-09-2005 19:18 » 

arr=(int **)calloc(str,sizeof(int*));
for( U = 0 ; U < str ; U++ ) arr = (int*)calloc(str,sizeof(int));

Так правильней будет. Улыбаюсь
p.s.
Оьрати внимание у себя еще на вторую строку, ты там вместо str пишешь st1.


« Последнее редактирование: 11-09-2005 19:20 от nikedeforest » Записан

ещё один вопрос ...
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #8 : 11-09-2005 19:22 » 

Можно сделать одну размерность на двухнаправленых связанных списках. Теряется быстрота доступа конечно, но при этом меньше головных болей с поддержкой второй размерности.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
CAHTA
Гость
« Ответ #9 : 11-09-2005 23:11 » 

p.s.
Оьрати внимание у себя еще на вторую строку, ты там вместо str пишешь st1.


Дык . это не st1 ,а stl. если я вместо stl подставлю str, то у меня получится "квадратный " массив ( размером str*str ) , а так получается массив размером str*srl Улыбаюсь)

вот ток остался один вопрос! как в этот массив записать данные. вот такой код не фурычит

int **arr;
int U,str,stl,F;

                  printf("i,y \n");
                  scanf("%i %i %i",&str,&stl,&F);
                  printf("%i %i",str,stl);

                  arr=(int **)calloc(str,sizeof(int*));
                  for( U = 0 ; U < str ; U++ ) arr = (int*)calloc(stl,sizeof(int));

                  arr[F][F]=str;
                  printf("\n\n %i=%i ",str,arr[F][F]);
Записан
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #10 : 12-09-2005 12:08 » 

Да вроде все нормально. Где не фурычит-то? Какие ошибки выдает?
Записан

ещё один вопрос ...
CAHTA
Гость
« Ответ #11 : 12-09-2005 12:09 » 

nikedeforest, уже все разобрал Улыбаюсь
Записан
CAHTA
Гость
« Ответ #12 : 12-09-2005 13:29 » 

а как реализовать ввод n чисел? n задается пользователем.

мне нужно ввести матрицу с клавиатуры . вводить значение для каждой ячейки неудобно! ( если напирмер матрица 100*100)
как реализовать ввод всей строки массива.? т.е вводить не по одному значению, а сразу все строку массива
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines