...
stack<class T> s;
...
программа-клиет,использующая стек на базе масива( С++ )
Народ помогите написать. Нужно написать программу-клиет использующую АТД стек на баззе масива, программа должна читать и зиписывать в фаил данные Ф.И.О и номер квартиры, должна иметь меню 1)Добавить 2)Вывести 3)Удалить выведенное. Помогите очень вас прошу кто может........
Цитата: vova_b
Народ помогите написать. Нужно написать программу-клиет использующую АТД стек на баззе масива, программа должна читать и зиписывать в фаил данные Ф.И.О и номер квартиры, должна иметь меню 1)Добавить 2)Вывести 3)Удалить выведенное. Помогите очень вас прошу кто может........
- Почему именно стек ? Это по заданию так или ты сам решил использовать стек?Стек-простейшая динамическая структура данных.Он реализует концепцию LIFO (Last In First Out), то есть элемент который добавили в стек последним выйдет из него первым.Уверен,что это подходит для твоей задачи ?
- Класс stack надо писать самому или можно использовать стандартный ?
- Что будет хранить этот стек ? Наверное, обьекты какого класса, например, User (где есть переменные lastname,firstname,address).
- Спрашивай что то более конкретное.Что не получается ? Что не понятно ? Все непонятно ?;) Предлагаю для начала написать класс пользователя.
2.Я неочень понемаю в стеках поэтому сказать точно немогу, сам незнаю объясни что значит стандартный???
3.Стек будет хранить Имя Фамилио Отчество и номер квартиры (FIO, №)
4. Вообще я со стеками никогда не работал и мне вообще ниче не понятно, вот и прошу помощи!
Цитата: vova_b
1.Стек так-как сказано в задании, и именно стек на базе массива!
2.Я неочень понемаю в стеках поэтому сказать точно немогу, сам незнаю объясни что значит стандартный???
3.Стек будет хранить Имя Фамилио Отчество и номер квартиры (FIO, №)
4. Вообще я со стеками никогда не работал и мне вообще ниче не понятно, вот и прошу помощи!
2.Я неочень понемаю в стеках поэтому сказать точно немогу, сам незнаю объясни что значит стандартный???
3.Стек будет хранить Имя Фамилио Отчество и номер квартиры (FIO, №)
4. Вообще я со стеками никогда не работал и мне вообще ниче не понятно, вот и прошу помощи!
Cтандартный это значит #include <stack> и далее обьявляешь его как:
Код:
Или свой писать надо ?
Цитата: m_Valery
Cтандартный это значит #include <stack> и далее обьявляешь его как:
Или свой писать надо ?
Код:
...
stack<class T> s;
...
stack<class T> s;
...
Или свой писать надо ?
Не свой писать ненадо!
Код:
#include <iostream>
#include <stack>
#include <string>
using namespace std;
class Student{
public:
//Конструктор по умолчанию
Student::Student(){}
//Функции доступа к полям
string lastname()const { return lastname_; }
void lastname(const std::string&);
string firstname()const { return firstname_; }
void firstname(const std::string&);
string address()const{ return address_; }
void address(const std::string&);
private:
//Поля данных
string lastname_;
string firstname_;
string address_;
};
void Student::lastname(const std::string& s)
{
lastname_ = s;
}
void Student::firstname(const std::string& s)
{
firstname_ = s;
}
void Student::address(const std::string& s)
{
address_ = s;
}
void Print(stack<Student>& );
int Menu();
void Create(stack<Student>&);
void DeleteAll(stack<Student>&);
int _tmain(int argc, _TCHAR* argv[])
{
int menu = 0;
stack<Student> s;
//напиши и вызови тут функцию для считывания
//данных из файла
Print(s);
while(menu != 4)
{
menu = Menu();
Student b;
string str1,str2,str3;
switch(menu){
case 1:
Create(s);
break;
case 2:
if(s.empty() == true){
cout<<"Stack is empty"<<endl;
break;
}
else
Print(s);
break;
case 3:
DeleteAll(s);
break;
case 4:
exit(0);
break;
default:
system("cls");
break;
}
}
return 0;
}
void Print(stack<Student>& a)
{
int size= a.size();
stack<Student> b;
while(!a.empty())
{
cout<<a.top().lastname()<<' '<<a.top().firstname()<<' '<<a.top().address()<<endl;;
b.push(a.top());
a.pop();
}
for(int i = b.size() - 1;i >= 0;--i){
a.push(b.top());
b.pop();
}
cout<<endl;
}
int Menu(){
int answer=0;
cout<<("\n1. Add... \n2. Print...\n3. Delete All...\n4. Exit...\n");
cin>>answer;
return answer;
}
void Create(stack<Student>& a)
{
Student b;
string str1,str2,str3;
cout<<"Input information "<<endl;
cout<<"lastname"<<endl;
cin>>str1;
cout<<"firstname"<<endl;
cin>>str2;
cout<<"address"<<endl;
cin>>str3;
b.lastname(str1);
b.firstname(str2);
b.address(str3);
a.push(b);
}
void DeleteAll(stack<Student>&a)
{
while(!a.empty())
{
a.pop();
}
}
#include <stack>
#include <string>
using namespace std;
class Student{
public:
//Конструктор по умолчанию
Student::Student(){}
//Функции доступа к полям
string lastname()const { return lastname_; }
void lastname(const std::string&);
string firstname()const { return firstname_; }
void firstname(const std::string&);
string address()const{ return address_; }
void address(const std::string&);
private:
//Поля данных
string lastname_;
string firstname_;
string address_;
};
void Student::lastname(const std::string& s)
{
lastname_ = s;
}
void Student::firstname(const std::string& s)
{
firstname_ = s;
}
void Student::address(const std::string& s)
{
address_ = s;
}
void Print(stack<Student>& );
int Menu();
void Create(stack<Student>&);
void DeleteAll(stack<Student>&);
int _tmain(int argc, _TCHAR* argv[])
{
int menu = 0;
stack<Student> s;
//напиши и вызови тут функцию для считывания
//данных из файла
Print(s);
while(menu != 4)
{
menu = Menu();
Student b;
string str1,str2,str3;
switch(menu){
case 1:
Create(s);
break;
case 2:
if(s.empty() == true){
cout<<"Stack is empty"<<endl;
break;
}
else
Print(s);
break;
case 3:
DeleteAll(s);
break;
case 4:
exit(0);
break;
default:
system("cls");
break;
}
}
return 0;
}
void Print(stack<Student>& a)
{
int size= a.size();
stack<Student> b;
while(!a.empty())
{
cout<<a.top().lastname()<<' '<<a.top().firstname()<<' '<<a.top().address()<<endl;;
b.push(a.top());
a.pop();
}
for(int i = b.size() - 1;i >= 0;--i){
a.push(b.top());
b.pop();
}
cout<<endl;
}
int Menu(){
int answer=0;
cout<<("\n1. Add... \n2. Print...\n3. Delete All...\n4. Exit...\n");
cin>>answer;
return answer;
}
void Create(stack<Student>& a)
{
Student b;
string str1,str2,str3;
cout<<"Input information "<<endl;
cout<<"lastname"<<endl;
cin>>str1;
cout<<"firstname"<<endl;
cin>>str2;
cout<<"address"<<endl;
cin>>str3;
b.lastname(str1);
b.firstname(str2);
b.address(str3);
a.push(b);
}
void DeleteAll(stack<Student>&a)
{
while(!a.empty())
{
a.pop();
}
}
Info :Compiling C:\Documents and Settings\admin\ðàáî÷èé ñòîë\12.cpp
Error: 12.cpp(37,26): Too few arguments in template class name 'stack'
Error: 12.cpp(37,27): ) expected
Error: 12.cpp(39,27): Too few arguments in template class name 'stack'
Error: 12.cpp(39,28): ) expected
Error: 12.cpp(40,30): Too few arguments in template class name 'stack'
Error: 12.cpp(40,31): ) expected
Error: 12.cpp(42,2): Declaration terminated incorrectly
Помоги горю с этим, я вообще из техникума пришол сразу на 3 курс а в технаре си небыло а тут сразу навалилось и я просто в шоке