relation change
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
|
||||
#include <ncursesw/ncurses.h>
|
||||
#include <iostream>
|
||||
#include "tree.h"
|
||||
@@ -46,13 +47,24 @@ int main()
|
||||
|
||||
firstTree.addPerson("Адам", true, Nobody, Nobody, {0, 1, 6});
|
||||
firstTree.addPerson("Ева", false, Nobody, Nobody, {0, 1, 6});
|
||||
firstTree.addRelation(0, Husband, 1);
|
||||
firstTree.addRelation(0, Spouse, 1);
|
||||
|
||||
firstTree.addPerson("Кайн", true, 0, 1);
|
||||
|
||||
firstTree.addPerson("Авел", true, 0, 1);
|
||||
firstTree.addRelation(2, Sibling, 3);
|
||||
|
||||
firstTree.addPerson("Сит", true, 0, 1, 230);
|
||||
firstTree.addRelation(2, Brother, 3);
|
||||
firstTree.addRelation(2, Brother, 4);
|
||||
firstTree.addRelation(2, Sibling, 4);
|
||||
firstTree.addPerson("Енос", true, 4, Nobody, 435);
|
||||
firstTree.addPerson("Каинан", true, 5 , Nobody, 605);
|
||||
firstTree.addPerson("Малелеил", true, 6, Nobody, 605);
|
||||
|
||||
|
||||
firstTree.addPerson("Енох", true, 3 , Nobody);
|
||||
firstTree.addPerson("Гаидад", true, 8 , Nobody);
|
||||
firstTree.addPerson("Малелеил", true, 9, Nobody);
|
||||
|
||||
|
||||
/* firstTree.print(); */
|
||||
firstTree.draw();
|
||||
@@ -107,173 +119,173 @@ int main()
|
||||
bool sex;
|
||||
unsigned father, mother; // IDs
|
||||
|
||||
do
|
||||
{
|
||||
clear();
|
||||
printw("Enter a command\n");
|
||||
refresh();
|
||||
// getmaxyx(stdscr,row,col); /* get the number of rows and columns */
|
||||
/* do */
|
||||
/* { */
|
||||
/* clear(); */
|
||||
/* printw("Enter a command\n"); */
|
||||
/* refresh(); */
|
||||
/* // getmaxyx(stdscr,row,col); /\* get the number of rows and columns *\/ */
|
||||
|
||||
std::cin >> input;
|
||||
for (i = 0; i < numCom; ++i)
|
||||
{
|
||||
if (strComp(input, commandList[i]))
|
||||
break;
|
||||
}
|
||||
/* std::cin >> input; */
|
||||
/* for (i = 0; i < numCom; ++i) */
|
||||
/* { */
|
||||
/* if (strComp(input, commandList[i])) */
|
||||
/* break; */
|
||||
/* } */
|
||||
|
||||
switch (i)
|
||||
{
|
||||
default:
|
||||
std::cout << "Unknown command, try again\n\n";
|
||||
break;
|
||||
case 0: //quit
|
||||
quit = 1;
|
||||
break;
|
||||
case 1: //rename
|
||||
std::cout << "Enter new name\n\n";
|
||||
std::cin >> name;
|
||||
trees[curTree].rename(name);
|
||||
break;
|
||||
case 2: //load
|
||||
cin >> input;
|
||||
trees.push(Tree(input));
|
||||
if (!trees[trees.gNum() - 1].loadTree())
|
||||
std::cout << "File doesnt exist or is empty.\n\n";
|
||||
break;
|
||||
case 3: //save
|
||||
trees[curTree].saveTree();
|
||||
break;
|
||||
case 4: //addPerson
|
||||
std::cin >> name >> day >> month >> year >> sex;
|
||||
trees[curTree].addPerson(name, sex, Nobody, Nobody, EventTime(year, month, day));
|
||||
break;
|
||||
case 5: //addPersonWP
|
||||
std::cin >> name >> day >> month >> year >> sex >> father >> mother;
|
||||
trees[curTree].addPerson(name, sex, father, mother, EventTime(year, month, day));
|
||||
break;
|
||||
case 6: //addRelation
|
||||
std::cin >> name >> input >> secondName;
|
||||
while (!strToRel(input))
|
||||
{
|
||||
std::cout << "Invalid Relation, try again!\n";
|
||||
std::cin >> input;
|
||||
}
|
||||
if(!trees[curTree].addRelation(name, strToRel(input), secondName))
|
||||
std::cout << "Failure! One or both of the relatives don't exist.\n\n";
|
||||
break;
|
||||
case 7: //addRelationID
|
||||
std::cin >> id >> input >> secondId;
|
||||
while (!strToRel(input))
|
||||
{
|
||||
std::cout << "Invalid Relation, try again!\n";
|
||||
std::cin >> input;
|
||||
}
|
||||
if(trees[curTree].addRelation(id, strToRel(input), secondId))
|
||||
std::cout << "Failure! One or both of the relatives don't exist.\n\n";
|
||||
break;
|
||||
case 8: //findID
|
||||
std::cin >> name;
|
||||
id = trees[curTree].findId(name);
|
||||
if (id == Nobody)
|
||||
std::cout << "No such person in tree " << curTree <<"\n\n";
|
||||
else
|
||||
std::cout << id << "\n\n";
|
||||
break;
|
||||
case 9: //equate
|
||||
std::cin >> id >> secondId;
|
||||
trees[id] = trees[secondId];
|
||||
break;
|
||||
case 10: //combine
|
||||
std::cin >> id >> secondId;
|
||||
trees[id] += trees[secondId];
|
||||
break;
|
||||
case 11: //subtract
|
||||
std::cin >> id >> secondId;
|
||||
trees[id] -= trees[secondId];
|
||||
break;
|
||||
case 12: //removePerson
|
||||
std::cin >> name;
|
||||
if (trees[curTree].findId(name) != Nobody)
|
||||
trees[curTree].removePerson(name);
|
||||
else
|
||||
std::cout << "No such member!\n\n";
|
||||
break;
|
||||
case 13: //removePersonID
|
||||
std::cin >> id;
|
||||
if (trees[curTree].gNumP() > id)
|
||||
trees[curTree].removePerson(id);
|
||||
else
|
||||
std::cout << "No such member!\n\n";
|
||||
break;
|
||||
case 14: //removeRelation
|
||||
std::cin >> name >> secondName;
|
||||
if (trees[curTree].gNumP() > trees[curTree].findId(name) && trees[curTree].gNumP() > trees[curTree].findId(secondName))
|
||||
trees[curTree].removeRelation(name, secondName);
|
||||
else
|
||||
std::cout << "No such member!\n\n";
|
||||
break;
|
||||
case 15: //removeRelationID
|
||||
std::cin >> id >> secondId;
|
||||
if (trees[curTree].gNumP() > id && trees[curTree].gNumP() > secondId)
|
||||
trees[curTree].removeRelation(id, secondId);
|
||||
else
|
||||
std::cout << "No such member\n\n";
|
||||
break;
|
||||
case 16: //addTree
|
||||
std::cin >> name;
|
||||
newTree = new Tree(name);
|
||||
trees.push(*newTree);
|
||||
delete newTree;
|
||||
break;
|
||||
case 17: //printRelatives
|
||||
std::cin >> id;
|
||||
if (id < trees[curTree].gNumP())
|
||||
trees[curTree].printRel(id);
|
||||
else
|
||||
std::cout << "No such member\n\n";
|
||||
break;
|
||||
case 18: //printMember
|
||||
std::cin >> id;
|
||||
if (id < trees[curTree].gNumP())
|
||||
trees[curTree].printMember(id);
|
||||
else
|
||||
std::cout << "No such member\n\n";
|
||||
break;
|
||||
case 19: //printAncestors
|
||||
std::cin >> id;
|
||||
/*if (id < trees[curTree].gNumP())
|
||||
trees[curTree].printAncestors(id);
|
||||
else
|
||||
std::cout << "No such member\n\n";*/
|
||||
break;
|
||||
case 20: //chooseTree
|
||||
std::cout << "Enter tree ID\n\n";
|
||||
std::cin >> id;
|
||||
if (id < trees.gNum())
|
||||
curTree = id;
|
||||
else
|
||||
std::cout << "No such tree\n\n";
|
||||
break;
|
||||
case 21: //prtCommonAncestor
|
||||
std::cin >> id >> secondId;
|
||||
if (id < trees[curTree].gNumP() || secondId < trees[curTree].gNumP())
|
||||
trees[curTree].printMember(trees[curTree].findCommonAncestor(id, secondId));
|
||||
else
|
||||
std::cout << "No such member\n\n";
|
||||
break;
|
||||
case 22: //prtOldestAncestors
|
||||
std::cin >> id;
|
||||
if (id < trees[curTree].gNumP())
|
||||
trees[curTree].printOldestAncestors(id);
|
||||
else
|
||||
std::cout << "No such member\n\n";
|
||||
break;
|
||||
case 23:
|
||||
trees[curTree].print();
|
||||
break;
|
||||
}
|
||||
/* switch (i) */
|
||||
/* { */
|
||||
/* default: */
|
||||
/* std::cout << "Unknown command, try again\n\n"; */
|
||||
/* break; */
|
||||
/* case 0: //quit */
|
||||
/* quit = 1; */
|
||||
/* break; */
|
||||
/* case 1: //rename */
|
||||
/* std::cout << "Enter new name\n\n"; */
|
||||
/* std::cin >> name; */
|
||||
/* trees[curTree].rename(name); */
|
||||
/* break; */
|
||||
/* case 2: //load */
|
||||
/* cin >> input; */
|
||||
/* trees.push(Tree(input)); */
|
||||
/* if (!trees[trees.gNum() - 1].loadTree()) */
|
||||
/* std::cout << "File doesnt exist or is empty.\n\n"; */
|
||||
/* break; */
|
||||
/* case 3: //save */
|
||||
/* trees[curTree].saveTree(); */
|
||||
/* break; */
|
||||
/* case 4: //addPerson */
|
||||
/* std::cin >> name >> day >> month >> year >> sex; */
|
||||
/* trees[curTree].addPerson(name, sex, Nobody, Nobody, EventTime(year, month, day)); */
|
||||
/* break; */
|
||||
/* case 5: //addPersonWP */
|
||||
/* std::cin >> name >> day >> month >> year >> sex >> father >> mother; */
|
||||
/* trees[curTree].addPerson(name, sex, father, mother, EventTime(year, month, day)); */
|
||||
/* break; */
|
||||
/* case 6: //addRelation */
|
||||
/* std::cin >> name >> input >> secondName; */
|
||||
/* while (!strToRel(input)) */
|
||||
/* { */
|
||||
/* std::cout << "Invalid Relation, try again!\n"; */
|
||||
/* std::cin >> input; */
|
||||
/* } */
|
||||
/* if(!trees[curTree].addRelation(name, strToRel(input), secondName)) */
|
||||
/* std::cout << "Failure! One or both of the relatives don't exist.\n\n"; */
|
||||
/* break; */
|
||||
/* case 7: //addRelationID */
|
||||
/* std::cin >> id >> input >> secondId; */
|
||||
/* while (!strToRel(input)) */
|
||||
/* { */
|
||||
/* std::cout << "Invalid Relation, try again!\n"; */
|
||||
/* std::cin >> input; */
|
||||
/* } */
|
||||
/* if(trees[curTree].addRelation(id, strToRel(input), secondId)) */
|
||||
/* std::cout << "Failure! One or both of the relatives don't exist.\n\n"; */
|
||||
/* break; */
|
||||
/* case 8: //findID */
|
||||
/* std::cin >> name; */
|
||||
/* id = trees[curTree].findId(name); */
|
||||
/* if (id == Nobody) */
|
||||
/* std::cout << "No such person in tree " << curTree <<"\n\n"; */
|
||||
/* else */
|
||||
/* std::cout << id << "\n\n"; */
|
||||
/* break; */
|
||||
/* case 9: //equate */
|
||||
/* std::cin >> id >> secondId; */
|
||||
/* trees[id] = trees[secondId]; */
|
||||
/* break; */
|
||||
/* case 10: //combine */
|
||||
/* std::cin >> id >> secondId; */
|
||||
/* trees[id] += trees[secondId]; */
|
||||
/* break; */
|
||||
/* case 11: //subtract */
|
||||
/* std::cin >> id >> secondId; */
|
||||
/* trees[id] -= trees[secondId]; */
|
||||
/* break; */
|
||||
/* case 12: //removePerson */
|
||||
/* std::cin >> name; */
|
||||
/* if (trees[curTree].findId(name) != Nobody) */
|
||||
/* trees[curTree].removePerson(name); */
|
||||
/* else */
|
||||
/* std::cout << "No such member!\n\n"; */
|
||||
/* break; */
|
||||
/* case 13: //removePersonID */
|
||||
/* std::cin >> id; */
|
||||
/* if (trees[curTree].gNumP() > id) */
|
||||
/* trees[curTree].removePerson(id); */
|
||||
/* else */
|
||||
/* std::cout << "No such member!\n\n"; */
|
||||
/* break; */
|
||||
/* case 14: //removeRelation */
|
||||
/* std::cin >> name >> secondName; */
|
||||
/* if (trees[curTree].gNumP() > trees[curTree].findId(name) && trees[curTree].gNumP() > trees[curTree].findId(secondName)) */
|
||||
/* trees[curTree].removeRelation(name, secondName); */
|
||||
/* else */
|
||||
/* std::cout << "No such member!\n\n"; */
|
||||
/* break; */
|
||||
/* case 15: //removeRelationID */
|
||||
/* std::cin >> id >> secondId; */
|
||||
/* if (trees[curTree].gNumP() > id && trees[curTree].gNumP() > secondId) */
|
||||
/* trees[curTree].removeRelation(id, secondId); */
|
||||
/* else */
|
||||
/* std::cout << "No such member\n\n"; */
|
||||
/* break; */
|
||||
/* case 16: //addTree */
|
||||
/* std::cin >> name; */
|
||||
/* newTree = new Tree(name); */
|
||||
/* trees.push(*newTree); */
|
||||
/* delete newTree; */
|
||||
/* break; */
|
||||
/* case 17: //printRelatives */
|
||||
/* std::cin >> id; */
|
||||
/* if (id < trees[curTree].gNumP()) */
|
||||
/* trees[curTree].printRel(id); */
|
||||
/* else */
|
||||
/* std::cout << "No such member\n\n"; */
|
||||
/* break; */
|
||||
/* case 18: //printMember */
|
||||
/* std::cin >> id; */
|
||||
/* if (id < trees[curTree].gNumP()) */
|
||||
/* trees[curTree].printMember(id); */
|
||||
/* else */
|
||||
/* std::cout << "No such member\n\n"; */
|
||||
/* break; */
|
||||
/* case 19: //printAncestors */
|
||||
/* std::cin >> id; */
|
||||
/* /\*if (id < trees[curTree].gNumP()) */
|
||||
/* trees[curTree].printAncestors(id); */
|
||||
/* else */
|
||||
/* std::cout << "No such member\n\n";*\/ */
|
||||
/* break; */
|
||||
/* case 20: //chooseTree */
|
||||
/* std::cout << "Enter tree ID\n\n"; */
|
||||
/* std::cin >> id; */
|
||||
/* if (id < trees.gNum()) */
|
||||
/* curTree = id; */
|
||||
/* else */
|
||||
/* std::cout << "No such tree\n\n"; */
|
||||
/* break; */
|
||||
/* case 21: //prtCommonAncestor */
|
||||
/* std::cin >> id >> secondId; */
|
||||
/* if (id < trees[curTree].gNumP() || secondId < trees[curTree].gNumP()) */
|
||||
/* trees[curTree].printMember(trees[curTree].findCommonAncestor(id, secondId)); */
|
||||
/* else */
|
||||
/* std::cout << "No such member\n\n"; */
|
||||
/* break; */
|
||||
/* case 22: //prtOldestAncestors */
|
||||
/* std::cin >> id; */
|
||||
/* if (id < trees[curTree].gNumP()) */
|
||||
/* trees[curTree].printOldestAncestors(id); */
|
||||
/* else */
|
||||
/* std::cout << "No such member\n\n"; */
|
||||
/* break; */
|
||||
/* case 23: */
|
||||
/* trees[curTree].print(); */
|
||||
/* break; */
|
||||
/* } */
|
||||
|
||||
} while (!quit);
|
||||
/* } while (!quit); */
|
||||
|
||||
endwin(); /* stop ncursers */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user