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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.05.2008, 22:23   #1
Cyberex
Новичок
Джуниор
 
Регистрация: 06.05.2008
Сообщений: 2
По умолчанию Неправильный вывод данных из стека С++

Я только-только начал учить С++. Пишу под ДОСом. И у меня вот баг вылез:

Я хочу поместить цифры в стек и потом их просто вывести от туда, но мне не выводит последнею введенную мною цифру, а заменяет ее 0.00000.

То-есть я пишу:
1
2
3

выводит:
2
1
0

Вот код. Подскажите плиз где бага (подправте код).

Код:
#include <stdio.h>
#include <iostream.h>
struct stack
{
double s[1000];
int top;
};

void reset(stack* st)
{
st->top = -1;
}

void push(stack* st, int s)
{
++st->top;
st->s[st->top] = s;
}
double pop(stack* st)
{
--st->top;
return st->s[st->top];
}

main()
{
double str;
int count = sizeof(str);
stack My_stack;
reset(&My_stack);

cout << "\nEnter number \n";
for(int i=1; i<=count; i++)
{
cin >> str;

push(&My_stack, str);

}



while(My_stack.top !=-1)
{
printf ("\n %f", pop(&My_stack));
}
cout << endl;


}
Cyberex вне форума Ответить с цитированием
Старый 06.05.2008, 23:42   #2
vvviperrr
Тупой студент
Форумчанин
 
Аватар для vvviperrr
 
Регистрация: 12.05.2007
Сообщений: 614
По умолчанию

Код:
double str; 
int count = sizeof(str); 
for(int i=1; i<=count; i++)
...
не показывай это никому)) я не совсем понял зачем ты так сделал, может тебе было влом написать int count = 8 и ты решил так хитро сделать)
вот код.

Код:
struct stack  
{ 
	double s[1000]; 
	int top; 
};  
	   
void reset(stack* st)  
{ 
	st->top = -1; 
}  

void push(stack* st, double s)  
{ 
	 st->top++; 
	 st->s[st->top] = s; 
}  

 double pop(stack* st)  
 { 
	int ret = st->s[st->top];
	st->top--;
	return ret; 
 }  
	   
void main()  
{ 
double str; 
int count;
stack My_stack; 
reset(&My_stack); 
  
cout << "\nEnter number \n"; 
cin>>count;

for(int i=0; i<count; i++) 
{ 
	cin >> str;
	push(&My_stack, str); 
}  
 
	   
while(My_stack.top !=-1)  
	printf ("\n %f", pop(&My_stack)); 

cout << endl;  
getch();
}
пс. не знаю, по какой книге ты учишься, но советую Р.Лафоре Объектно-ориентированное программирование. все понятно написано. сам по ней учусь)
vvviperrr вне форума Ответить с цитированием
Старый 07.05.2008, 00:12   #3
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Или вот так:

Код:
struct stack
{
double s[1000];
int top;
};

void reset(stack* st)
{
st->top = 0;
}

void push(stack* st, int s)
{
st->s[st->top] = s;
++st->top;
}
double pop(stack* st)
{
--st->top;
return st->s[st->top];
}

void main()
{
double str;
int count = sizeof(str);
stack My_stack;
reset(&My_stack);

cout << "\nEnter number \n";
for(int i=0; i<count; i++)
{
cin >> str;

push(&My_stack, str);

}

while(My_stack.top !=0)
{
printf ("\n %f", pop(&My_stack));
}
cout << endl;

}
Только тогда top будет "указывать" не на последний элемент стека, а за него. Все зависит от того, как именно вам надо этот стек реализовать.

З.Ы. А про sizeof(str) правда прикольно
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 07.05.2008, 16:53   #4
Cyberex
Новичок
Джуниор
 
Регистрация: 06.05.2008
Сообщений: 2
По умолчанию

vvviperrr

Спасибо, скачал книгу эту.

Это просто пример был, я его видоизменил сильно, но САЙЗОФ остался
Cyberex вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод данных в порты LPT и COM Захар Компьютерное железо 6 05.04.2010 12:29
Вывод данных из курсора PL/SQL D-mon БД в Delphi 0 25.06.2008 14:00
Вывод данных в Excel Novi4ek Помощь студентам 3 22.05.2008 11:32
табличный вывод данных zatoichi Общие вопросы Delphi 1 28.03.2008 08:23
Вывод данных в Delphi nala Общие вопросы Delphi 7 21.02.2008 17:12