Startpunkten
This commit is contained in:
345
Stack_And_Queue/huvud.cpp
Normal file
345
Stack_And_Queue/huvud.cpp
Normal file
@@ -0,0 +1,345 @@
|
||||
//#####################################################
|
||||
// LAB 2 I PUMA
|
||||
// CRILLE & ROBIN 971208
|
||||
// LÄNKAD TEMPLATE LISTA
|
||||
//=====================================================
|
||||
|
||||
#include "lista.cpp"
|
||||
#include "twindow.hpp"
|
||||
|
||||
const int BUFFERSIZE = 100; //för säkerinmatning
|
||||
const int MAXSIZE = 5; //maximalt antal element
|
||||
const int SIST = 0; //inmatning i listan
|
||||
const int FORST=!SIST; //inmatning i listan
|
||||
const int FALSE=0; //boolsk varabel
|
||||
const int TRUE=!FALSE; //boolsk varabel
|
||||
|
||||
const int BREDD = 9; //fönstrets bredd
|
||||
const int HOJD = 3; //fönstrets höjd
|
||||
const int LEFT = 1; //fönstrets Y-position
|
||||
const int TOP = 18; //fönstrets X-position
|
||||
|
||||
const int moveX = 0; //fönsterflyttning X-led
|
||||
const int moveY = 5; //fönsterflyttning Y-led
|
||||
|
||||
//#####################################################
|
||||
// SÄKER INMATNING
|
||||
// SER TILL ATT BARA HELTAL MATAS IN
|
||||
//=====================================================
|
||||
int mataIn()
|
||||
{
|
||||
char buffer[BUFFERSIZE];
|
||||
int f;
|
||||
do
|
||||
{
|
||||
cin >> buffer;
|
||||
if (strcmp(buffer,"0") == 0)
|
||||
return 0;
|
||||
else
|
||||
{
|
||||
f = atoi(buffer);
|
||||
if (f!=0)
|
||||
return f;
|
||||
else
|
||||
cout <<"Inget tal, forsok igen: ";
|
||||
}
|
||||
}while (!f);
|
||||
}
|
||||
//#####################################################
|
||||
// SÄTTER IN ELEMENT I STACKEN
|
||||
//=====================================================
|
||||
void _push(stackClass <TWindow> &minStack)
|
||||
{
|
||||
int position = FORST;
|
||||
TWindow *newItem;
|
||||
newItem = new TWindow(LEFT, TOP,(BREDD+LEFT),(HOJD+TOP),BLUE,WHITE);
|
||||
if(minStack.length() < MAXSIZE)
|
||||
if(newItem)
|
||||
{
|
||||
cout << "Skriv in element!";
|
||||
cout << *newItem;
|
||||
newItem->editText();
|
||||
if(minStack.duplicate(*newItem))
|
||||
cout <<"\nElementet finns redan.";
|
||||
else
|
||||
{
|
||||
minStack.push(position, *newItem);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
cout <<"\nMinnet tog slut";
|
||||
else
|
||||
cout <<"Maximalt antal element i stacken";
|
||||
getch();
|
||||
}
|
||||
//#####################################################
|
||||
// SÄTTER IN ELEMENT I KÖN
|
||||
//=====================================================
|
||||
void _ins(queueClass <TWindow> &minQueue)
|
||||
{
|
||||
TWindow *newItem;
|
||||
int position = SIST;
|
||||
newItem = new TWindow(LEFT, TOP,(BREDD+LEFT),(HOJD+TOP),BLUE,WHITE);
|
||||
if(minQueue.length() < MAXSIZE)
|
||||
if(newItem)
|
||||
{
|
||||
cout << "Skriv in element!";
|
||||
cout << *newItem;
|
||||
newItem->editText();
|
||||
if(minQueue.duplicate(*newItem))
|
||||
cout <<"\nElementet finns redan.";
|
||||
else
|
||||
{
|
||||
minQueue.ins(position, *newItem);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
cout <<"\nMinnet tog slut";
|
||||
else
|
||||
cout <<"Maximalt antal element i kon";
|
||||
getch();
|
||||
}
|
||||
//#####################################################
|
||||
// TAR BORT ELEMENT I STACKEN
|
||||
//=====================================================
|
||||
void _pop(stackClass <TWindow> &minStack)
|
||||
{
|
||||
if(!minStack.isEmpty())
|
||||
minStack.pop();
|
||||
else
|
||||
{
|
||||
cout <<"Stacken ar tom.";
|
||||
getch();
|
||||
}
|
||||
}
|
||||
//#####################################################
|
||||
// TAR BORT ELEMENT I KÖN
|
||||
//=====================================================
|
||||
void _del(queueClass <TWindow> &minQueue)
|
||||
{
|
||||
if(!minQueue.isEmpty())
|
||||
minQueue.del();
|
||||
else
|
||||
{
|
||||
cout <<"Kon ar tom.";
|
||||
getch();
|
||||
}
|
||||
}
|
||||
//#####################################################
|
||||
// VISAR ÖVERSTA ELEMENTET I STACKEN
|
||||
//=====================================================
|
||||
void _top(stackClass <TWindow> &minStack)
|
||||
{
|
||||
if(!minStack.isEmpty())
|
||||
minStack.top();
|
||||
else
|
||||
cout <<"Stacken ar tom.";
|
||||
getch();
|
||||
}
|
||||
//#####################################################
|
||||
// VISAR ÖVERSTA ELEMENTET I KÖN
|
||||
//=====================================================
|
||||
void _getFront(queueClass <TWindow> &minQueue)
|
||||
{
|
||||
if(!minQueue.isEmpty())
|
||||
minQueue.getFront();
|
||||
else
|
||||
cout <<"Kon ar tom.";
|
||||
getch();
|
||||
}
|
||||
//#####################################################
|
||||
// VISAR ALLA ELEMENT I STACKEN
|
||||
//=====================================================
|
||||
void _stackDisplay(stackClass <TWindow> minStack)
|
||||
{
|
||||
if(!minStack.isEmpty())
|
||||
{
|
||||
cout << "Elementen ar: \n";
|
||||
minStack.display();
|
||||
}
|
||||
else
|
||||
cout <<"Stacken ar tom";
|
||||
getch();
|
||||
}
|
||||
//#####################################################
|
||||
// VISAR ALLA ELEMENT I KÖN
|
||||
//=====================================================
|
||||
void _queueDisplay(queueClass <TWindow> minQueue)
|
||||
{
|
||||
if(!minQueue.isEmpty())
|
||||
{
|
||||
cout << "Elementen ar: \n";
|
||||
minQueue.display();
|
||||
}
|
||||
else
|
||||
cout <<"Kon ar tom";
|
||||
getch();
|
||||
}
|
||||
//#####################################################
|
||||
// VISAR ANTALET ELEMENT I STACKEN
|
||||
//=====================================================
|
||||
void _stackAntal(stackClass <TWindow> minStack)
|
||||
{
|
||||
int antalElement;
|
||||
if(minStack.isEmpty())
|
||||
cout <<"Stacken ar tom.";
|
||||
else
|
||||
{
|
||||
antalElement=minStack.length();
|
||||
cout<<"Det finns "<< antalElement<< " element i stacken";
|
||||
}
|
||||
getch();
|
||||
}
|
||||
//#####################################################
|
||||
// VISAR ANTALET ELEMENT I KÖN
|
||||
//=====================================================
|
||||
void _queueAntal(queueClass <TWindow> minQueue)
|
||||
{
|
||||
int antalElement;
|
||||
if(minQueue.isEmpty())
|
||||
cout <<"Kon ar tom.";
|
||||
else
|
||||
{
|
||||
antalElement=minQueue.length();
|
||||
cout<<"Det finns "<< antalElement<< " element i kon";
|
||||
}
|
||||
getch();
|
||||
}
|
||||
//#####################################################
|
||||
// KOLLAR OM DET FINNS ELEMENT I STACEKN
|
||||
//=====================================================
|
||||
void _stackIsEmpty(stackClass <TWindow> minStack)
|
||||
{
|
||||
if(minStack.isEmpty())
|
||||
cout <<"Ja, stacken ar tom.";
|
||||
else
|
||||
cout <<"Nej, det finns element i stacken";
|
||||
getch();
|
||||
}
|
||||
//#####################################################
|
||||
// KOLLAR OM DET FINNS ELEMENT I KÖN
|
||||
//=====================================================
|
||||
void _queueIsEmpty(queueClass <TWindow> minQueue)
|
||||
{
|
||||
if(minQueue.isEmpty())
|
||||
cout <<"Ja, kon ar tom.";
|
||||
else
|
||||
cout <<"Nej, det finns element i kon";
|
||||
getch();
|
||||
}
|
||||
//#####################################################
|
||||
// STACK-MENY
|
||||
//=====================================================
|
||||
void stackMenuItems()
|
||||
{
|
||||
clrscr();
|
||||
cout <<" Meny for stacken \n"
|
||||
<<" ---------------- \n\n"
|
||||
<<" 1. Lagg till ett element overst \n"
|
||||
<<" 2. Ta bort oversta elementet \n"
|
||||
<<" 3. Skriv ut oversta elementet \n"
|
||||
<<" 4. Skriv ut alla element \n"
|
||||
<<" 5. Hur många element finns det \n"
|
||||
<<" 6. Ar stacken tom? \n"
|
||||
<<" 0. Huvudmeny \n\n";
|
||||
}
|
||||
void stackMenu()
|
||||
{
|
||||
stackClass<TWindow> minStack;
|
||||
char val = TRUE;
|
||||
do
|
||||
{
|
||||
stackMenuItems();
|
||||
cin >> val;
|
||||
switch (val)
|
||||
{
|
||||
case '1' : _push(minStack);break;
|
||||
case '2' : _pop(minStack);break;
|
||||
case '3' : _top(minStack);break;
|
||||
case '4' : _stackDisplay(minStack);break;
|
||||
case '5' : _stackAntal(minStack);break;
|
||||
case '6' : _stackIsEmpty(minStack);break;
|
||||
case '0' : ;break;
|
||||
default : cout <<" Fel val.";
|
||||
}
|
||||
}while(val!='0');
|
||||
}
|
||||
//#####################################################
|
||||
// QUEUE-MENYN
|
||||
//=====================================================
|
||||
void queueMenuItems()
|
||||
{
|
||||
clrscr();
|
||||
cout <<" Meny for kon \n"
|
||||
<<" ---------------- \n\n"
|
||||
<<" 1. Lagg till ett element sist i kon \n"
|
||||
<<" 2. Ta bort forsta elementet \n"
|
||||
<<" 3. Skriv ut forsta elementet \n"
|
||||
<<" 4. Skriv ut alla element \n"
|
||||
<<" 5. Hur många element finns det? \n"
|
||||
<<" 6. Ar kon tom? \n"
|
||||
<<" 0. Huvudmeny \n\n";
|
||||
}
|
||||
void queueMenu()
|
||||
{
|
||||
queueClass<TWindow> minQueue;
|
||||
char val = TRUE;
|
||||
do
|
||||
{
|
||||
queueMenuItems();
|
||||
cin >> val;
|
||||
switch (val)
|
||||
{
|
||||
case '1' : _ins(minQueue);break;
|
||||
case '2' : _del(minQueue);break;
|
||||
case '3' : _getFront(minQueue);break;
|
||||
case '4' : _queueDisplay(minQueue);break;
|
||||
case '5' : _queueAntal(minQueue);break;
|
||||
case '6' : _queueIsEmpty(minQueue);break;
|
||||
case '0' : ;break;
|
||||
default : cout <<" Fel val.";
|
||||
}
|
||||
}while(val!='0');
|
||||
}
|
||||
//#####################################################
|
||||
// MAIN-MENU-ITEMS
|
||||
//=====================================================
|
||||
void mainMenuItems()
|
||||
{
|
||||
clrscr();
|
||||
TWindow justText;
|
||||
justText.setText("Crille &Robin!");
|
||||
cout << justText;
|
||||
gotoxy(LEFT,TOP);
|
||||
cout << " Continue...";
|
||||
getch();
|
||||
clrscr();
|
||||
cout <<" Huvudmeny for lab 2 i PUMA. \n"
|
||||
<<" --------------------------- \n\n"
|
||||
<<" 1. Jobba med en stack. \n"
|
||||
<<" 2. Jobba med en ko. \n"
|
||||
<<" 0. Avsluta programmet. \n\n";
|
||||
|
||||
}
|
||||
//#####################################################
|
||||
// MAINFUNCTION
|
||||
//=====================================================
|
||||
void main()
|
||||
{
|
||||
char val = TRUE;
|
||||
do
|
||||
{
|
||||
mainMenuItems();
|
||||
cin >> val;
|
||||
switch (val)
|
||||
{
|
||||
case '1' : stackMenu();break;
|
||||
case '2' : queueMenu();break;
|
||||
case '0' : cout <<" Programmet avslutat"<< endl;break;
|
||||
default: cout <<" Fel val"<< endl;
|
||||
}
|
||||
}while (val != '0');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user