Member 12695722 Ответов: 1

Как сделать программу на C++, которая будет хранить имена (string или char) с помощью стека


Как сделать программу на C++, которая будет хранить имена (string или char) с помощью стека:
Например: вывод будет выглядеть следующим образом

Введите имя: Джон
Стек::: Джон
Введите имя: Алиса
Стек::: Джон Элис
Введите имя: Джоанна
Стек::: Джон Элис Джоанна
Введите имя: Дэйв
Стек::: Джон Элис Джоанна Дэйв
Введите имя: Джейк
Стек::: Джон Элис Джоанна Дэйв Джейк

по крайней мере 5 раз пользователь будет вводить имена

Что я уже пробовал:

Я пробовал этот вариант, но этот выводит только целое число, и мне нравится менять его на строку, которая может читать имена..
#include <iostream>
using namespace std;
const int STACK_SIZE = 5;
//prototype
bool isEmpty(int);
bool isFull(int , int);
void push(int[], int&, int);
void print(int[], int);
int pop (int[], int&);

int main()
{
	int top =-1;
	int stack[STACK_SIZE];

	int value;
	
	do{
		cout<<"Enter an integer:";
		cin>>value;
		push(stack, top ,value);
		print (stack, top);
		
	}while(!isFull(top,STACK_SIZE));
	
	while(!isEmpty(top))
		cout<< pop(stack, top)<<"";
		
		cout<<endl;
		system ("pause");
}

bool isEmpty(int top)
{
	return (top== -1);
}
bool isFull(int top, int size)
{
	return(top ==size-1);
}
void push(int stack[], int& top, int value)
{
	top++;
	stack[top] = value;
}
int pop(int stack[], int& top)
{
	int value = stack[top];
	top--;
	
	return value;
}
void print(int stack[], int top)
{
	cout<<"Stack:::";
	for(int i=0;i<=top;i++)
	cout<<stack[i]<<" ";
	cout<<endl;
}


выход:
Введите целое число:2
Стек::: 2
Введите целое число:2
Стек::: 2
Введите целое число:2
Стек::: 2
Введите целое число: 6
Стек::: 2 6
Введите целое число: 7
Стек::: 2 6 7
Введите целое число: 9
Стек::: 2 6 7 9
Введите целое число: 3
Стек::: 2 6 7 9 3

Пожалуйста, помогите мне, мне это нужно срочно ..

Richard MacCutchan

В интернете есть много примеров, объясняющих, как управлять простым стеком. Также извините, но это не срочно.

Philippe Mori

В чем проблема замены int около string в соответствующих местах?

1 Ответов

Рейтинг:
0

VISWESWARAN1998

пожалуйста, обратите внимание:
Я был предупрежден здесь профессионалами для решения домашних заданий, поэтому я не предоставляю решение (исходный код) для вашего вопроса.


Вы, вероятно, ищете контейнеры в C++ STL есть различные контейнеры, и, насколько мне известно, почти многие из них предоставляют решение, которое вы ищете.

Пример решается с помощью set[это можно сделать с помощью list, deque и т. д.]

Набор будет автоматически отсортирован и не сможет добавлять дубликаты элементов(Если вам нужны несортированные и могут быть дубликаты, то обратитесь к чему-то о контейнерах последовательности).

set<int> newSet;
	// Insertion of values
	newSet.insert(9);
	newSet.insert(8);
	newSet.insert(1);
	newSet.insert(0);
	newSet.insert(4);
	newSet.insert(6);
	// Iterator is something which will links Algorithm and container
	// Half open and closed implementation which means itr1 will point to the first elment of the set
	// itr2 will point to the next element of the last element present in the container
	set<int>::iterator itr1 = newSet.begin();
	set<int>::iterator itr2 = newSet.end();
	//Common iterator itr this is not equal to the end because the pointer points to the next element of the 
	//last elemet present in the container which is /0 i.e null
	for (set<int>::iterator itr = itr1; itr != itr2; itr++)
	{
		cout << *itr<<endl;
	}
	// No duplicates can be inserted in Set but could be inserted in multiset,vectors,list etc.,
	pair<set><int>::iterator, bool> tell;
	tell = newSet.insert(8);
	if (tell.second == false)cout << "Element present in the set" << endl;
	cin.get();
	return 0;

</int></set></int></int></int></int>


Я надеюсь, что объяснил что-то, но, пожалуйста, обратитесь к STL для получения дополнительной информации.
Если у вас есть какие-либо сомнения, пожалуйста, не стесняйтесь спрашивать меня.


Richard MacCutchan

Использование контейнеров STL не поможет, так как вопрос действительно заключается в том, чтобы попросить разработчика создать стек и узнать, как стек должен работать. Используя свою инициативу, чтобы выяснить это, он узнает гораздо больше, чем если бы один из нас опубликовал ответ. Во что бы то ни стало предлагайте предложения, но не делайте все это за них.

[no name]

Извините, сэр, моя ошибка, пожалуйста, извините меня