Startpunkt
This commit is contained in:
184
huvud.cpp
Normal file
184
huvud.cpp
Normal file
@@ -0,0 +1,184 @@
|
||||
#include <iostream> //f<>r in och utmatning
|
||||
#include <cstring>
|
||||
#include "defs.h"
|
||||
#include "tree.h"
|
||||
|
||||
using namespace std;
|
||||
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, f<>rsok igen: ";
|
||||
}
|
||||
} while (!f);
|
||||
return 0;
|
||||
}
|
||||
void _insert(treeClass &myTree)
|
||||
{
|
||||
dataType item;
|
||||
cout << " Vad vill du s<>tta in i tr<74>det: ";
|
||||
item = mataIn();
|
||||
myTree.insert(myTree.root, item);
|
||||
}
|
||||
void _del(treeClass &myTree)
|
||||
{
|
||||
if (!myTree.isEmpty())
|
||||
{
|
||||
dataType item;
|
||||
cout << " Vad vill du ta bort : ";
|
||||
item = mataIn();
|
||||
if (myTree.seek(myTree.root, item) != NULL)
|
||||
{
|
||||
myTree.del(myTree.root, item);
|
||||
return;
|
||||
}
|
||||
else
|
||||
cout << " Noden " << item << " finns inte. ";
|
||||
}
|
||||
else
|
||||
cout << " Du har inte gjort n<>got tr<74>d <20>nnu... ";
|
||||
}
|
||||
void _preOrder(treeClass myTree)
|
||||
{
|
||||
if (!myTree.isEmpty())
|
||||
myTree.preOrder(myTree.root);
|
||||
else
|
||||
cout << " Du har inte gjort n<>got tr<74>d <20>nnu... ";
|
||||
}
|
||||
void _inOrder(treeClass myTree)
|
||||
{
|
||||
if (!myTree.isEmpty())
|
||||
myTree.inOrder(myTree.root);
|
||||
else
|
||||
cout << " Du har inte gjort n<>got tr<74>d <20>nnu... ";
|
||||
}
|
||||
void _postOrder(treeClass myTree)
|
||||
{
|
||||
if (!myTree.isEmpty())
|
||||
myTree.postOrder(myTree.root);
|
||||
else
|
||||
cout << " Du har inte gjort n<>got tr<74>d <20>nnu... ";
|
||||
}
|
||||
void _seek(treeClass myTree)
|
||||
{
|
||||
if (!myTree.isEmpty())
|
||||
{
|
||||
dataType item;
|
||||
cout << " Mata in s<>kta v<>rdet: ";
|
||||
item = mataIn();
|
||||
if (myTree.seek(myTree.root, item) != NULL)
|
||||
cout << " Ja, noden " << item << " fanns med...";
|
||||
else
|
||||
cout << " Nej, noden " << item << " fanns inte med...";
|
||||
}
|
||||
else
|
||||
cout << " Du har inte gjort n<>got tr<74>d <20>nnu... ";
|
||||
}
|
||||
void _save(treeClass myTree)
|
||||
{
|
||||
if (!myTree.isEmpty())
|
||||
{
|
||||
fstream fil;
|
||||
char filnamn[NAMESIZE];
|
||||
cout << " Ange filnamn att spara: ";
|
||||
cin >> filnamn;
|
||||
fil.open(filnamn, ios::out | ios::binary);
|
||||
myTree.save(myTree.root, fil);
|
||||
fil.close();
|
||||
}
|
||||
else
|
||||
cout << " Du har inte gjort n<>got tr<74>d <20>nnu...";
|
||||
}
|
||||
void _load(treeClass &myTree)
|
||||
{
|
||||
if (myTree.isEmpty())
|
||||
{
|
||||
fstream fil;
|
||||
dataType item;
|
||||
char filnamn[NAMESIZE];
|
||||
cout << " Ange filnamn att h<>mta: ";
|
||||
cin >> filnamn;
|
||||
fil.open(filnamn, ios::in | ios::binary);
|
||||
if (fil)
|
||||
while (fil.peek() != EOF)
|
||||
{
|
||||
fil.read((char *)&item, sizeof(item));
|
||||
myTree.insert(myTree.root, item);
|
||||
}
|
||||
else
|
||||
cout << " Filen finns inte...";
|
||||
fil.close();
|
||||
}
|
||||
else
|
||||
cout << " Det finns redan v<>rden i tr<74>det. \n"
|
||||
<< " Du m<>ste ta bort samtliga noder \n"
|
||||
<< " eller starta om programmet f<>re \n"
|
||||
<< " du kan h<>mta ett tr<74>d fr<66>n fil \n";
|
||||
}
|
||||
void meny()
|
||||
{
|
||||
cout << " \n BIN<49>RT S<>K TR<54>D "
|
||||
<< " \n --------------- "
|
||||
<< " \n 1. L<>gg till nod "
|
||||
<< " \n 2. Ta bort nod "
|
||||
<< " \n 3. S<>k efter nod "
|
||||
<< " \n 4. Skriv ut i preorder "
|
||||
<< " \n 5. Skriv ut i inorder "
|
||||
<< " \n 6. Skriv ut i postorder "
|
||||
<< " \n 7. Spara tr<74>det p<> fil "
|
||||
<< " \n 8. H<>mta tr<74>d fr<66>n fil "
|
||||
<< " \n 0. Avsluta \n ";
|
||||
}
|
||||
int main()
|
||||
{
|
||||
treeClass myTree;
|
||||
char val = TRUE;
|
||||
do
|
||||
{
|
||||
meny();
|
||||
cin >> val;
|
||||
switch (val)
|
||||
{
|
||||
case '1':
|
||||
_insert(myTree);
|
||||
break;
|
||||
case '2':
|
||||
_del(myTree);
|
||||
break;
|
||||
case '3':
|
||||
_seek(myTree);
|
||||
break;
|
||||
case '4':
|
||||
_preOrder(myTree);
|
||||
break;
|
||||
case '5':
|
||||
_inOrder(myTree);
|
||||
break;
|
||||
case '6':
|
||||
_postOrder(myTree);
|
||||
break;
|
||||
case '7':
|
||||
_save(myTree);
|
||||
break;
|
||||
case '8':
|
||||
_load(myTree);
|
||||
break;
|
||||
case '0':
|
||||
cout << " Programmet avslutat";
|
||||
break;
|
||||
default:
|
||||
cout << " Felaktigt val";
|
||||
}
|
||||
} while (val != '0');
|
||||
}
|
||||
Reference in New Issue
Block a user