2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Помогите исправить прогу
Сообщение18.02.2012, 18:36 
Мне нужно сделать так, чтобы программа работала с int, float (double), char одновременно.


#include "stdafx.h"
#include<iostream.h>
#include<conio.h>
#define maxSize 10
#include<stdlib.h>
#include<string>



template <typename T, int MAXSIZE>
class Stack
{
public:
Stack();
void pop();
void push();
void top();
void menu();
int empty();
int full();
void DisplayStack();
void operation();

private:
int last;
int item[maxSize];
};
template <typename T, int MAXSIZE>
Stack<T,MAXSIZE>::Stack()
{
last = 0;
menu();
}
template <typename T, int MAXSIZE>
void Stack<T,MAXSIZE> :: menu()
{
cout << "PRESS 1 FOR PUSH THE ITEM ON STACK" << endl;
cout << "PRESS 2 FOR POP THE ITEM ON STACK" << endl;
cout << "PRESS 3 FOR DISPLAY THE WHOLE STACK" << endl;
cout << "PRESS 4 FOR DISPLAY THE TOP ELEMENT OF STACK" << endl;
cout<<"ENTER YOUR CHOICE" << endl;
operation();
}
template <typename T, int MAXSIZE>
void Stack<T,MAXSIZE> :: operation()
{
int choice;

cin >> choice;
switch(choice)
{
case 1:
push();
break;

case 2:
pop();
break;

case 3:
DisplayStack();
break;

case 4:
top();
break;

default:
cout << "PLZ ENTER VALID NUMBER" <<endl;
operation();
}

}
template <typename T, int MAXSIZE>
int Stack<T,MAXSIZE>::empty()
{
if( last == 0 )
return 0;
else
return 1;
}
template <typename T, int MAXSIZE>
int Stack<T,MAXSIZE>::full()
{
if( last == maxSize )
return 0;
else
return 1;
}
template <typename T, int MAXSIZE>
void Stack<T,MAXSIZE>::push()
{
if( full() == 0 )
{
throw std::out_of_range("Stack<>::push(): stack is full");
}
else
{
char ch;
int x;
last = last + 1;
cout<<"ENTER THE ELEMENT TO BE INSERTED" << endl;
cin>>x;
item[last] = x;
cout<<"ANOTHER ITEM ON STACK? y/n "<< endl;
cin>>ch;
if(ch=='y')
push();
cin.get();
}
menu();
}
template <typename T, int MAXSIZE>
void Stack<T,MAXSIZE>::pop()
{
if(empty() == 0)
{
throw std::out_of_range("Stack<>::pop(): empty stack");
}
else
{
char ch;

cout<<"AS THE LAST ELEMENT IN STACK IS "<<item[last] << endl;
last = last-1;
cout<<"WANT TO POP OUT ANOTHER ELEMENT y/n" << endl;
cin>>ch;
if(ch=='y')
pop();
cin.get();
}
menu();
}

template <typename T, int MAXSIZE>
void Stack<T,MAXSIZE> :: top()
{
if (empty() == 0) {
throw std::out_of_range("Stack<>::top(): empty stack");
}
else

cout<<"TOP ELEMENT IS " << endl;
cout << item[last] << endl;

}









template <typename T, int MAXSIZE>
void Stack<T,MAXSIZE>::DisplayStack()
{

cout<<"THE ELEMENTS IN STACK IS"<<endl;
for(int i = 1;i <= last; i++)
{
cout << item[i] << endl;
}
cin.get();
cout<<"PRESS ENTER FOR MAIN MENU " << endl;
cin.get();
menu();

}


void main()
{
try {
Stack<int,10> int10Stack;

}

catch (std::exception const& ex) {
cerr << "Exception: " << ex.what() << endl;

}


getch();
}

 
 
 
 Re: Помогите исправить прогу
Сообщение18.02.2012, 21:03 
Аватара пользователя
 i  Тема перемещена в Карантин.

Чтобы оттуда выбраться

1. Для оформления кода воспользуйтесь тегом syntax (см. Как подсвечивать синтаксис?).

2. Подробно объясните, где именно возникают трудности и что Вы пытались сделать для их преодоления.

После того как исправите сообщение, сообщите об этом в теме Сообщение в карантине исправлено.
________________
Всякий, кто поступил в университет, но не хочет сам учиться - враг своей страны, подрывающий ее научно-технический, интеллектуальный и оборонный потенциалы.
(c) по мотивам сообщения Yuri Gendelman.

 
 
 [ Сообщений: 2 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group