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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.10.2009, 16:54   #1
777Aidar777
 
Регистрация: 26.10.2009
Сообщений: 4
По умолчанию Структуры данных "стек"

Добрый день, уважаемые!
Помогите пожалуйста написать программу. Такие вот задания:

Задание 1.Реализовать набор действий на основе динамического распределения памяти.
Пустой стек задается установкой sp := nil.
• проверку пустоты стека
• добавление элемента в вершину стека
• удаление элемента из вершины стека
• вывод текущего состояния стека на экран
Требования:
• все действия должны быть оформлены как процедуры или функции
• добавлению/удалению должна предшествовать проверка возможности выполнения этих операций
• главная программа реализует следующий набор действий:
o инициализация пустого стека
o организация диалогового цикла с пользователем


Задание 2. Добавить в предыдущую программу возможность занесения в стек сразу нескольких значений. Количество вводимых значений должно запрашиваться у пользователя, а сами значения можно формировать случайным образом с помощью функции Random (не забыть предварительно вызвать функцию Randomize). Проверить работоспособность программы при различных количествах вводимых элементов, в том числе – для больших значений (десятки тысяч элементов).

Задание 3 (дополнительно). Добавить в предыдущую программу следующие возможности:
• при удалении элемента из основного стека запросить у пользователя, что делать далее с этим элементом: действительно удалить с освобождением памяти или включить его в вершину вспомогательного стека удаленных элементов
• при добавлении нового элемента запросить у пользователя происхождение этого элемента: действительно создание нового элемента или выбор его с вершины вспомогательного стека
• вывод содержимого вспомогательного стека удаленных элементов
777Aidar777 вне форума Ответить с цитированием
Старый 26.10.2009, 16:55   #2
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

да вам в фриланс обращаться нужно, или наработки есть?
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Старый 26.10.2009, 17:03   #3
777Aidar777
 
Регистрация: 26.10.2009
Сообщений: 4
По умолчанию

наработок нету, я в этом вообще не чего не понимаю.
777Aidar777 вне форума Ответить с цитированием
Старый 26.10.2009, 19:59   #4
777Aidar777
 
Регистрация: 26.10.2009
Сообщений: 4
По умолчанию

................................
777Aidar777 вне форума Ответить с цитированием
Старый 26.11.2012, 01:03   #5
svkpro
Пользователь
 
Регистрация: 22.11.2012
Сообщений: 52
По умолчанию стек С++

это не вся задача но добрая часть рабочего кода:

Код:
#include "stdafx.h"
#include <conio.h>
#include <iostream>
using namespace std;

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; 
 top = ptr; 
 }

void pop()//извлечение 
{ 
 if(top != NULL) //проверка на пустоту, тут же можно вывести сообщение если пустой
 { 
 Kniga* ptr = top->next; 
 printf("%s ",top->shifr); 
 printf("%s ",top->avtor); 
 printf("%s ",top->nazv); 
 printf("%s ",top->izdat); 
 printf("%s - deleted\n",top->god); 
 free(top); 
 top = ptr; 
 } 
}

void show_stack() //показ
{ 
 Kniga* ptr = top; 
 while(ptr != NULL) 
 { 
	 printf("%s ",ptr->shifr);
	 printf("%s ",ptr->avtor);
	 printf("%s ",ptr->nazv);
	 printf("%s ",ptr->izdat);
	 printf("%s \n",ptr->god);
		
 ptr = ptr->next; 
 } 
}


int main()
{
	locale::global(locale("Rus"));
	char str1[10]; 
	char str2[10];
	char str3[10];
	char str4[10];
	char str5[10];
	
		for(int i=0;i<3;i++) { 
			sprintf(str1,"запись %d",i+1);
			sprintf(str2,"запись %d",i+1); 
			sprintf(str3,"запись %d",i+1); 
			sprintf(str4,"запись %d",i+1); 
			sprintf(str5,"запись %d",i+1); 
					
			push(str1,str2,str3,str4,str5); 
				
			} 
			show_stack(); 
		while(top != NULL) pop();
	   system("pause");
 return 0;
}



___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 26.11.2012 в 11:25.
svkpro вне форума Ответить с цитированием
Старый 26.11.2012, 11:26   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

svkpro, некропостерством увлекаетесь.. ну-ну...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Курсовой по дисциплине "Структуры и организация данных в ЭВМ" (БНТУ) alex_fox Фриланс 4 19.10.2009 09:17
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
блок "cont" с права не принимает значение "margin: 10px;" которое описано в body tabikA HTML и CSS 5 24.02.2009 21:50