Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.03.2014, 04:19   #41
East Undia Trading
Форумчанин
 
Регистрация: 02.10.2013
Сообщений: 231
По умолчанию

Stilet, я не понял как мне подойти к своей задаче.
Например, я могу вывести слова в ряд
Код:
void printlist(bool reverse=false){
 if(!reverse){
	for(TList *l=list;l;l=l->next){
        cout<<"Hello"<<'\t';
	} cout<<"\n";
 } else {
	for(TList *l=last;l;l=l->prev){
        cout<<"Hello"<<'\t';
	} cout<<"\n";
 }
	return;
}
Но как сделать поля записи требуемые в задании? название театра, дата, название спектакля, взрослый {жанр} /детский {возраст ребенка И почему в данном случает не работает add(добавление)?
Какую литературу можете посоветовать?То что советовал alekopoko уже поперек горла, снова написано как стать первоклассным программистом, а о том как научиться программировать ни слова.

Последний раз редактировалось East Undia Trading; 01.03.2014 в 05:25.
East Undia Trading вне форума Ответить с цитированием
Старый 01.03.2014, 13:22   #42
alekopoko
Форумчанин
 
Регистрация: 03.04.2013
Сообщений: 167
По умолчанию

Я понял тебя.Насчет литератутры.Практика программирования Роба Пайк Брайан Керниган.тема - Структуры и алгоритмы данных.В этой теме - расширяемые массивы.
там есть хороший пример.

Функция addname добавляет новый элемент состоящий из полей структуры.
В функции addname указатель nameval благодаря функциям malloc и realloc(динам.память) изменяется в массив структур.

Код:
#include<stdio.h>
#include<stdlib.h>
typedef struct Nameval Nameval;
struct Nameval
{
	char*name;
	int value;
};
struct Nvtab
{
	int nval; //текущие количество элементов
	int max;// под сколько элементов выделена память
	Nameval*nameval; 
}nvtab;
enum{NVINIT=1,NVGROW=2};

int addname(Nameval newname)
{
	Nameval*nvp;
	if(nvtab.nameval==NULL)
	{
		nvtab.nameval=(Nameval*)malloc(NVINIT*sizeof(Nameval));
		if(nvtab.nameval==NULL)
			return -1;
		nvtab.max=NVINIT;
		nvtab.nval=0;
	}
	else if(nvtab.nval>=nvtab.max)
	{
		nvp=(Nameval*)realloc(nvtab.nameval,(NVGROW*nvtab.max)*sizeof(Nameval));
		if(nvp==NULL)
			return -1;
		nvtab.max*=NVGROW;
		nvtab.nameval=nvp;
	}
	nvtab.nameval[nvtab.nval]=newname;
	return nvtab.nval++;
}

void main()
{
	Nameval c;
	c.name="aleksey";
	c.value=222;
	addname(c);
	c.name="ivan";
	c.value=333;
	addname(c);
	printf("%s\n%d\n",nvtab.nameval[0]);
	printf("%s\n%d\n",nvtab.nameval[1]);
}
p.s. ну main конечно это мои каляки-маляки) авторы книги что-нибудь покрасивее написали бы)

Последний раз редактировалось alekopoko; 01.03.2014 в 13:34.
alekopoko вне форума Ответить с цитированием
Старый 01.03.2014, 18:45   #43
East Undia Trading
Форумчанин
 
Регистрация: 02.10.2013
Сообщений: 231
По умолчанию

alekopoko, спасибо, сейчас почитаю.
East Undia Trading вне форума Ответить с цитированием
Старый 01.03.2014, 18:49   #44
alekopoko
Форумчанин
 
Регистрация: 03.04.2013
Сообщений: 167
По умолчанию

Ты заменяешь вот эти вот поля структуры из примера на свои поля
Код:
struct Nameval
{
	char*name;
	int value;
};
+ не забывай размер структуры у тебя будет другой т.к. у тебя полей будет больше
двух.
Допустим у тебя полей пять.
Значит это
Код:
enum{NVINIT=1,NVGROW=2};
заменяем на это
Код:
enum{NVINIT=1,NVGROW=5};
alekopoko вне форума Ответить с цитированием
Старый 01.03.2014, 21:41   #45
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 821
По умолчанию

Цитата:
Какую литературу можете посоветовать?То что советовал alekopoko уже поперек горла, снова написано как стать первоклассным программистом, а о том как научиться программировать ни слова.
Для начала - Керниган, Ритчи "Язык программирования Си". Она хорошо вправляет мозги в нужное русло, но для этого придётся сначала прочитать хотя бы половину книги, где описываются основы.
^-.-^ My GitHub
Fenex вне форума Ответить с цитированием
Старый 03.03.2014, 22:33   #46
East Undia Trading
Форумчанин
 
Регистрация: 02.10.2013
Сообщений: 231
По умолчанию

alekopoko,
Вот что получилось.Это программа подходит чтобы выполнять действия, которые даны по ссылке Stilet http://www.programmersforum.ru/showp...8&postcount=25 ?
Код:
#include<stdio.h>
#include<stdlib.h>
typedef struct Nameval Nameval;
struct Nameval
{
	char*name;
	int data;
	char*spektakl;
	int*cenzura;
};
struct Nvtab
{
	int nval; //текущие количество элементов
	int max;// под сколько элементов выделена память
	Nameval*nameval; 
}nvtab;
enum{NVINIT=1,NVGROW=5};

int addname(Nameval newname)
{
	Nameval*nvp;
	if(nvtab.nameval==NULL)
	{
		nvtab.nameval=(Nameval*)malloc(NVINIT*sizeof(Nameval));
		if(nvtab.nameval==NULL)
			return -1;
		nvtab.max=NVINIT;
		nvtab.nval=0;
	}
	else if(nvtab.nval>=nvtab.max)
	{
		nvp=(Nameval*)realloc(nvtab.nameval,(NVGROW*nvtab.max)*sizeof(Nameval));
		if(nvp==NULL)
			return -1;
		nvtab.max*=NVGROW;
		nvtab.nameval=nvp;
	}
	nvtab.nameval[nvtab.nval]=newname;
	return nvtab.nval++;
}

void main()
{
	Nameval c;
	c.name="Aleksey";
	c.data=1842;
	c.spektakl="New";
	c.cenzura=18;
	addname(c);
	printf("%s\n%d\n%s\n%d\n",nvtab.nameval[0]);
}
East Undia Trading вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Структуры данных - язык С asv1994 Помощь студентам 7 09.05.2013 18:23
Динамические структуры данных, списковые структуры (надо разобраться что делает программа) _4Alex4_ Помощь студентам 1 14.11.2012 07:39
структуры.язык си skauzer_blr Помощь студентам 1 27.04.2012 21:16
язык С. Динамические структуры данных. Виктория Кусяк Помощь студентам 0 26.12.2011 23:51
Файлы,структуры.Язык Си tutis Помощь студентам 1 02.05.2011 20:12