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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2011, 17:16   #1
tuyana))
 
Регистрация: 12.12.2010
Сообщений: 6
По умолчанию статический стек

написать программу ,демонстрирующую выполнение операций над статическим стеком.операции:очистить стек, поместить элемент в стек,взяьб элемент из стека, проверка пуст ли стек,и операйия ,показывающая содержимое структуры после выполнения какого-либо действия с ней.
main.cpp
Код:
void main ()
{ int n=0; //ноиер команды
  float m=0.0;//элемент стека
  int exitFlag=0;
stack st;
st.top=0;
setlocale(LC_CTYPE, "Russian");
  do { printf_s ("<1>-поместить элемент в стек \n");
       printf_s ("<2>-распечатать содержимое стека \n");
       printf_s ("<3>-извлечь элемент из стека \n");
       printf_s ("<4>-выход \n");
       int repeatFlag=0;

		do {
			printf_s ("Введите номер команды (от 1 до 4); ");
		    scanf_s ("%d",&n);
				switch (n) {
				    case 1: printf_s("Введите число:");
						    scanf_s ("%f",&m);
						    Push (&st,m);
						    break;
					case 2: if (!isStackEmpty(&st))
								printStack(&st);
							else printf_s("Стек пуст \n");
							break;
					case 3: if (!Pop(&st,m))
								printf_s("Из стека извлечен элемент: %f\n",m);
							else printf_s("Стек пуст \n");
							break;
					case 4: exitFlag=1;
						break;
					default: printf_s("ОШИБКА: неверный номер команды \n");
						repeatFlag=1;
				}
		}while (!repeatFlag && !exitFlag);
  }while (!exitFlag);
}

stack.cpp
Код:

#include "stdio.h"
#include "stack.h"

int Push (stack *s,float m)//поместить элемент в стек
{if (s->top!=N-1) 
    {s->elem [++s->top]=m;
	return 1;}
return 0;}

int isStackEmpty (stack* s)//проверка на пустоту
{if (s->top!=-1)
return 1;else return 0;}


int Pop (stack* s, float &m)
{if (!isStackEmpty(s))
{m= s->elem [s->top];
s->top=s->top-1;
return 1;}
else return 0;}

void printStack(stack *s)// распечатать содержимое стека
{printf_s("Содержимое стека:");
if (s->top!=0)
{stack *q=s;
do {printf_s("%f",s->elem[s->top]);
s++;}

while (q->top!=0);
}
printf_s("\n");
}
stack.h
Код:
#ifndef STACK_H
#define STACK_H
#define N 10
#include <stdlib.h>

struct stack {int top;
float elem [N];};

int Push ( stack *s, float m);

int isStackEmpty (stack *S);
int Pop (stack* s,float &m);

void printStack(stack *s);
#endif /"STACK_H"/

Последний раз редактировалось Stilet; 04.04.2011 в 17:33.
tuyana)) вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
статический двумерный массив Koksa Помощь студентам 1 10.02.2011 07:58
Статический Cookie и работа с ним bulldog5293 Работа с сетью в Delphi 0 20.12.2010 22:17
статический массив IrinaSS Общие вопросы C/C++ 2 08.12.2010 19:31
Одномерный статический массив С++ Natali21 Помощь студентам 1 17.11.2010 16:57
статический ----> динамический . Помогите nexUS1 Помощь студентам 2 29.12.2009 20:13