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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2012, 10:26   #1
svkpro
Пользователь
 
Регистрация: 22.11.2012
Сообщений: 52
По умолчанию количество элементов в стеке

здравствуйте.
у меня есть структура:
Код:
typedef struct kniga { 
char shifr[10]; 
char avtor[10]; 
char nazv[10];
char izdat[10];
char god[10];
struct kniga* next; 
 } Kniga;

Kniga* top = NULL;
так я добавляю элементы в стек:
Код:
void push(char* shifr, char* avtor, char* nazv, char* izdat, char* god)//добавление 
 {
	 Kniga* ptr = (Kniga *)malloc(sizeof(Kniga)); 
	 strcpy(ptr->shifr,shifr);
	 strcpy(ptr->avtor,avtor); 
	 strcpy(ptr->nazv,nazv);
	 strcpy(ptr->izdat,izdat);
	 strcpy(ptr->god,god);
	 ptr->next = top; 	 
	 cout<<"элемент успешно добавлен в стек!"<<endl<<endl;
	 top = ptr;
 }
и все бы ничего, но я не могу подсчитать количество внесенных элементов. подскажите пожалуйста хотя бы в каком направлении мне работать?
svkpro вне форума Ответить с цитированием
Старый 30.11.2012, 11:19   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Была же такая тема. Заведите переменную и считайте.
p51x вне форума Ответить с цитированием
Старый 30.11.2012, 12:30   #3
svkpro
Пользователь
 
Регистрация: 22.11.2012
Сообщений: 52
По умолчанию

что считать? сколько раз я использую указатель или... что.. я не понимаю я выделяю память и как только записана информация next получает адрес вершины после этого
указателю top присваивается ptr. но яже не могу сосчитать top или next пишет что int который я хочу применить для счетчика не совместим с типом kniga???????
я уже думал зацепится как то за выделяемую память но если честно тоже ничего не получилось)))) вот пошел 4ЫЙ день))))
svkpro вне форума Ответить с цитированием
Старый 30.11.2012, 13:15   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
что считать? сколько раз я использую указатель или... что..
Вам, что нужно считать?
Цитата:
количество внесенных элементов
вот и считайте. Добавляете элемент +1 к переменной, удаляете -1
p51x вне форума Ответить с цитированием
Старый 30.11.2012, 14:28   #5
svkpro
Пользователь
 
Регистрация: 22.11.2012
Сообщений: 52
По умолчанию

а переменная какого типа должна быть? я же к переменной типа kniga не добавлю +1 а в переменную другого типа не добавлю данные из структуры(( вот и думаю(((
svkpro вне форума Ответить с цитированием
Старый 30.11.2012, 15:02   #6
svkpro
Пользователь
 
Регистрация: 22.11.2012
Сообщений: 52
По умолчанию

наверно я выражаюсь как то неоднозначно))
вот смотрите:
Код:
int t;//вот переменная счетчик

void push(char* shifr, char* avtor, char* nazv, char* izdat, char* god)//добавление 
 {
	 if(t>=20)cout<<"стек полон!"<<endl;//вот ограничение 
	 Kniga* ptr = (Kniga *)malloc(sizeof(Kniga)); 
	 strcpy(ptr->shifr,shifr);
	 strcpy(ptr->avtor,avtor); 
	 strcpy(ptr->nazv,nazv);//------>>вот этот код я могу применить без процедуры
	 strcpy(ptr->izdat,izdat);
	 strcpy(ptr->god,god);
	 ptr->next = top;
	 t++;//вот +1
	 cout<<t;
	 cout<<"элемент успешно добавлен в стек!"<<endl<<endl;
	 top = ptr;
	 
 }
вот и получается что это ограничение на количество раз запуска процедуры а не элементов в стеке? то есть если t=20 а я в это время ручками пропишу код а не через процедуру то элемент в стек добавится. понимаете меня?
Код:
kniga* stack[20];
int top;
void push(kniga* zap)
{
	if(top>=20){
		cout<<"стек полон"<<endl;
		return;
	}
	if(top<20){
		stack[top]=zap;
		top++;
		cout<<"элемент успешно добавлен в стек!"<<endl;
	}

}
а вот старый код. и если top 20 все! больше не внесешь!

Последний раз редактировалось svkpro; 30.11.2012 в 15:07.
svkpro вне форума Ответить с цитированием
Старый 30.11.2012, 15:53   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
а переменная какого типа должна быть? я же к переменной типа kniga не добавлю +1
Вы считаете числами или книгами? Целую, естественно.

Цитата:
а в переменную другого типа не добавлю данные из структуры((
На х.. Зачем т.е.? Зачем в счетчик пихать данные?

Код:
if(t>=20)cout<<"стек полон!"<<endl;//вот ограничение
у вас в стеке может появится больше элементов, чем максимум?

Цитата:
вот этот код я могу применить без процедуры
Зачем? У вас есть функция для работы со стеком. Зачем к нему лезть еще где-то.

Цитата:
вот и получается что это ограничение на количество раз запуска процедуры а не элементов в стеке? то есть если t=20 а я в это время ручками пропишу код а не через процедуру то элемент в стек добавится. понимаете меня?
а еще можно структуры ядра из драйвера затирать... и чо? Создавайте класс, закрывайте указатель на стек и предоставляйте интерфейс.

Цитата:
а вот старый код. и если top 20 все! больше не внесешь!
вы представляете разницу между массивом фиксированного размера и списком?
p51x вне форума Ответить с цитированием
Старый 30.11.2012, 16:26   #8
svkpro
Пользователь
 
Регистрация: 22.11.2012
Сообщений: 52
По умолчанию

у меня складывается впечатление, что ваша мудрость в том что вы скептически относитесь к мыслям начинающих и после этого человеку просто не хочется обращаться за помощью) простите за прямоту)
а на счет понимания... если бы я до конца понимал почему иной раз не получается вряд ли сюда бы писал. но в любом случае спасибо.
svkpro вне форума Ответить с цитированием
Старый 30.11.2012, 22:40   #9
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

вы о чем?..
p51x вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проверка "количество эл в стеке" С++ svkpro Помощь студентам 0 27.11.2012 15:18
С++ Задача(Определить количество отрицательных элементов, количество элементов в интервале от 1 до 5) grosssmile Помощь студентам 0 29.09.2012 18:25
В массиве из п элементов много совпадающих элементов. Найти количество различных элементов Strax Фриланс 11 12.06.2010 20:13
Дан массив из N элементов (чисел),определить количество элементов кратных 3. Woha Общие вопросы C/C++ 2 08.12.2008 13:12
количество элементов матрицы, больших среднего арифмитического всех её элементов finch Помощь студентам 3 27.08.2007 15:48