Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> массив массивов 
V
    Опции темы
Mikron
Дата 31.10.2009, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 2.5.2007

Репутация: нет
Всего: нет



Добрый вечер. Помогите решить вопрос, как сделать массив состоящий из массивов в C. Или любой другой объект, при обращении к одному из его элементов вызывался бы массив. 
PM MAIL   Вверх
andrew_121
Дата 31.10.2009, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



Mikron, Смутно догадываюсь о чем речь. Не мог бы ты сформулировать задачу целиком?


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Mikron
Дата 31.10.2009, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 2.5.2007

Репутация: нет
Всего: нет



andrew_121, смысл в следующем

есть 20 массивов 

kn1[] ... kn20

что бы над этими массивами произвести требуемые операции нужно 20 раз вызвать функцию 

mass(xStar, yStart, kn1);
...
mass(xStar, yStart, kn20);

И вопрос в следующем, как сделать так, что бы не писать 20 строк с различными аргументами

Это сообщение отредактировал(а) Mikron - 31.10.2009, 20:02
PM MAIL   Вверх
586
Дата 31.10.2009, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 8
Всего: 146



Создай массив указателей, которые будут указывать на одномерные массивы.
PM   Вверх
andrew_121
Дата 31.10.2009, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



Mikron, В цикле, инкрементируешь указатель на указатель. Таким образом получаешь доступ к следующему массиву.
Не плохо бы еще на код взглянуть.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
shuttle
Дата 1.11.2009, 00:01 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 9.4.2008

Репутация: нет
Всего: нет



Цитата

есть 20 массивов 

kn1[] ... kn20


если это одномерные массивы, то сделай из них один двухмерный, по принципу.

massiv[0]=kn1[]
...
massiv[19]=kn20[]

и вызывай свою функцию

Код

for(int i=0;i<20;i++)
         mass(xStar, yStart, massiv[i]);

--------------------
PM MAIL   Вверх
Bonez92
Дата 1.11.2009, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 1.11.2009

Репутация: нет
Всего: нет



Код

int myarray[10][10]

Вы это имели ввиду?
PM   Вверх
zim22
Дата 1.11.2009, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(Bonez92 @  1.11.2009,  15:04 Найти цитируемый пост)
Вы это имели ввиду?
int myarray[10][10]

Цитата(Mikron @  31.10.2009,  19:00 Найти цитируемый пост)
есть 20 массивов 

скорей уж это: 
Код

int myarray[20][10] // 20 массивов по 10 элементов в каждом




--------------------
PM MAIL   Вверх
Mikron
Дата 2.11.2009, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 2.5.2007

Репутация: нет
Всего: нет



спасибо за помощь, но я все не верно формулирую вопрос

пусть не 20, пусть 1000
для примера
Код

#include <stdio.h>

main()
{
    int mass1[]={1};
    int mass2[]={1,2};
    int mass3[]={1,2,3,4};
    ...
    int mass1000[]={1,2,3,4...1000};

    int n1= (sizeof mass1)/(sizeof mass1[0]);
    ...
    int n1000= (sizeof mass1000)/(sizeof mass1000[0])

    printf("%d\n",n1);
    ...
    printf("%d\n",n1000);

    return 0;                                           //примерно 3000 строчек
}


вот так что-то не то выдает, но смысл понятен
Код

#include <stdio.h>

void funk(int mass[])
{

    int n= (sizeof mass)/(sizeof mass[0]);
    printf("%d\n",n);

}

main()
{
    int mass1[]={1};
    int mass2[]={1,2};
    int mass3[]={1,2,3,4};
    ...
    int mass1000[]={1,2,3,4...1000};

    funk(mass1);                       
    ...
    funk(mass1000);

    return 0;                           //примерно 2000 строчек
}



можно ли сократить программу до ~ 1000 строчек ??
PM MAIL   Вверх
bsa
Дата 3.11.2009, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Mikron, как нефиг делать:
Код
unsigned count = 1000;
int **mas = (int**)malloc(sizeof(*mas)*count);
unsigned i;
for(i = 1; i <= count; ++i) {
   int j, *p;
   p = (int*)malloc(sizeof(*mas[i])*(i));
   mas[i-1] = p;
   for(j = 1; j <= i; ++j, ++p)
      *p = j;
}

for(i = 0; i < count; ++i)
   func(mas[i]);

//....

for(i = 0; i < count; ++i)
   free(mas[i]);
free(mas);

     
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0522 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.