Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Структуры

17K
04 марта 2008 года
JKJ
32 / / 20.10.2007
Возможно это банальный вопрос и не раз поднимался или же наоборот из за того что слишком прост не поднимался, но все таки:
Код:
void mas(struct kartoteka*,struct kartoteka**);
struct kartoteka{
char tt[60];
char omg[10];
int r,y;
};

void main()
{
stud*block,**lib;
block=(kartoteka*)calloc(1,sizeof(kartoteka));
lib=(kartoteka**)calloc(kol,sizeof(kartoteka));
fflush(stdin);

Как заполнить данный массив структур?Пробывал заполнять по принципу "обычного" массива( насколько я понимаю это так сказать массив в массиве) однако ничего не вышло.Прошу помочь.Или же отослать на ссылку с материалом описывающим заполнение массивов структур.Я все таки думаю что эта обычная "стандартная" процедура, которая скорее всего описана в любом нормальном учебнике по С.
92
04 марта 2008 года
Тень Пса
2.2K / / 19.10.2006
это иерархические структуры данных, каждый элемент массива - указатель на массив (и в общем получается массив указателей).

соответственно теперь, после определения массива указателей, тебе надо пройтись по всем элементам и положить туда либо указатель на первый элемент сложенного массива, либо "ничего" =)

хы...

ну, например вот ссылка... про массивы указателей - http://ermak.cs.nstu.ru/cprog/Book2001/305-01.htm
17K
04 марта 2008 года
JKJ
32 / / 20.10.2007
Спс, почитаем-с)
Сайт не пашет почему то:/ Утром работал, однако тогда времени не было(, кто может есче подсказать что нить из этой темы.Очень надо севодня в этом разобраться.
*усилинно исчет в яндыксе*
2.2K
04 марта 2008 года
REFOT
181 / / 08.04.2005
А так понятней будет? :)
Код:
struct kartoteka{
   char tt[60];
   char omg[10];
   int r,y;
   };

   //Задаём двух мерный массив. Тоже самое, что если бы написали
   //kartoteka pptest[10][100];

   kartoteka** pptest;
   pptest = (kartoteka**)calloc(10,sizeof(kartoteka*));
   for(int i=0; i<10; i++){
        pptest = (kartoteka*)calloc(100,sizeof(kartoteka));
   }

   //А тут его заполняем

   for(int i=0; i<10; i++){
       for(int j=0; j<100; j++){
            pptest[j].r = 0;
            pptest[j].y = 0;
            strcpy(pptest[j].tt,"Test");
        }
   }
17K
04 марта 2008 года
JKJ
32 / / 20.10.2007
Цитата:

//Задаём двух мерный массив. Тоже самое, что если бы написали
//kartoteka pptest[10][100];



Хм...Или ты или я что то не правильно поняли)
Смысл примерно такой(я просто пытаюсь узнать говорим ли мы об одном и том же):
Вносяться допустим данные
omg-фамилия
tt-имя
r-возраст
y-вес
Которые так сказать должны вноситься в одномерный массив(block).
При вводе массива block он становиться первым эоементом массива lib, после опять заполняется новый block и он становиться 2-м элементом lib и т.д. Или же всетаки не понял я?

2.2K
04 марта 2008 года
REFOT
181 / / 08.04.2005
:) Да, я не верно понял вопроса.
Ну тогда это можно сделать так:

Код:
struct kartoteka{
   char tt[60];
   char omg[10];
   int r,y;
};

kartoteka** lib;
lib = (kartoteka**)calloc(kol,sizeof(kartoteka*));


kartoteka* block;

block = (kartoteka*)calloc(1,sizeof(kartoteka));
block->r=0; block->y=0; //К примеру
lib[0]=block;

block = (kartoteka*)calloc(1,sizeof(kartoteka));
block->r=1; block->y=1; //К примеру
lib[1]=block;
92
05 марта 2008 года
Тень Пса
2.2K / / 19.10.2006
Код:
struct kartoteka
{
  char tt[60];
  char omg[10];
  int r,y;
};

kartoteka** lib;

lib = new kartoteka*[kol];

int i, j;

for (i = 0; i < kol; i++)
{
  kartoteka* lib_lower = new kartoteka[lower_kol];
  lib = lib_lower;
}

// далее чтобы заполнить все элементы

for (i = 0; i < kol; i++)
{
  for (j = 0; k < kol; j++)
  {
    kartoteka elem;
    elem.tt = "name";
    // и так далее заполняем все данные элемента
    lib[j] = elem;
  }
}


как бы всё.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог