#include"test.hpp" #include #include #include "../zlasdtest/test.hpp" using namespace lasd; void menu(){ unsigned short int choice; DataStructure chosenDataStructure; DataType chosenDataType; Implementation chosenImplementation; do{ std::cout<<"1. Use your tests (to be used by the professor)"<>std::ws; std::cin>>choice; }while(choice!=1 && choice!=2); switch(choice){ case 1: lasdtest(); break; case 2: chosenDataStructure = ChooseDataStructure(); chosenImplementation = ChooseImplementation(); chosenDataType = ChooseDataType(); UseChosenType(chosenDataStructure, chosenDataType, chosenImplementation); break; } } // Chooser functions DataStructure ChooseDataStructure(){ unsigned short int choice; do{ std::cout<<"Choose a data structure:"<>std::ws; std::cin>>choice; }while(choice!=1 && choice!=2); if(choice == 1) return DataStructure::stack; else if(choice == 2) return DataStructure::queue; } DataType ChooseDataType(){ unsigned short int choice; do{ std::cout<<"Choose a data type:"<>std::ws; std::cin>>choice; }while(!(choice>0 && choice<4)); if(choice==1) return DataType::integer; else if(choice==2) return DataType::ffloat; else if(choice==3) return DataType::sstring; } Implementation ChooseImplementation(){ unsigned short int choice; do{ std::cout<<"Choose an implementation:"<>std::ws; std::cin>>choice; }while(!(choice>0 && choice<3)); if(choice==1) return Implementation::vector; else if(choice==2) return Implementation::list; } void UseChosenType(DataStructure chosenDataStructure, DataType chosenDataType, Implementation chosenImplementation){ if(chosenDataStructure == DataStructure::stack){ if(chosenImplementation == Implementation::vector){ if(chosenDataType == DataType::integer){ StackVec stckvec; stckvec = generateRandomStackVecInt(); StackFunctions(stckvec); } else if(chosenDataType == DataType::ffloat){ StackVec stckvec; stckvec = generateRandomStackVecFloat(); StackFunctions(stckvec); } else if(chosenDataType == DataType::sstring){ StackVec stckvec; stckvec = generateRandomStackVecString(); StackFunctions(stckvec); } } else if(chosenImplementation == Implementation::list){ if(chosenDataType == DataType::integer){ StackLst stcklst; stcklst = generateRandomStackLstInt(); StackFunctions(stcklst); } else if(chosenDataType == DataType::ffloat){ StackLst stcklst; stcklst = generateRandomStackLstFloat(); StackFunctions(stcklst); } else if(chosenDataType == DataType::sstring){ StackLst stcklst; stcklst = generateRandomStackLstString(); StackFunctions(stcklst); } } } else if(chosenDataStructure == DataStructure::queue){ if(chosenImplementation == Implementation::vector){ if(chosenDataType == DataType::integer){ QueueVec queuevec; queuevec = generateRandomQueueVecInt(); QueueFunctions(queuevec); } else if(chosenDataType == DataType::ffloat){ QueueVec queuevec; queuevec = generateRandomQueueVecFloat(); QueueFunctions(queuevec); } else if(chosenDataType == DataType::sstring){ QueueVec queuevec; queuevec = generateRandomQueueVecString(); QueueFunctions(queuevec); } } else if(chosenImplementation == Implementation::list){ if(chosenDataType == DataType::integer){ QueueLst queuelist; queuelist = generateRandomQueueListInt(); QueueFunctions(queuelist); } else if(chosenDataType == DataType::ffloat){ QueueLst queuelist; queuelist = generateRandomQueueListFloat(); QueueFunctions(queuelist); } else if(chosenDataType == DataType::sstring){ QueueLst queuelist; queuelist = generateRandomQueueListString(); QueueFunctions(queuelist); } } } } template void StackFunctions(T& stk){ unsigned short int choice; do{ std::cout<>std::ws; std::cin>>choice; std::cout< void QueueFunctions(T& queue){ unsigned short int choice; do{ std::cout<>std::ws; std::cin>>choice; std::cout< class C, typename T> void Enqueue(C& queue){ T element; std::cout<<"Element to enqueue: "; std::cin>>std::ws; std::cin>>element; queue.Enqueue(element); } template void Dequeue(T& queue){ try{ queue.Dequeue(); }catch(std::length_error exc){ std::cout<<"Caught length_error exception!"< void HeadNDequeue(T& queue){ try{ std::cout<<"The head and dequeued element is "< void Head(T& queue){ try{ std::cout<<"The head is "< class C, typename T> void Push(C& stk){ T element; std::cout<<"Element to push: "; std::cin>>std::ws; std::cin>>element; stk.Push(element); } template void Pop(T& stk){ try{ stk.Pop(); }catch(std::length_error exc){ std::cout<<"Caught length_error exception!"< void TopNPop(T& stk){ try{ std::cout<<"Element top & popped is: "< void Top(T& stk){ try{ std::cout<<"The element on top is: "< void Empty(T& str){ std::cout<<"It is "; str.Empty()? std::cout<<"" : std::cout<<"not "; std::cout<<"empty"; } template void Size(T& str){ std::cout<<"Size is "< void Clear(T& str){ str.Clear(); std::cout<<"It has been cleared."; } /* ----- Generator functions ----- */ lasd::QueueLst generateRandomQueueListInt(){ ulong dim = getDimension(); int tmp; QueueLst myqueue; std::default_random_engine gen(std::random_device{}()); std::uniform_int_distribution dist(0,1000); std::cout< generateRandomQueueListFloat(){ ulong dim = getDimension(); float tmp; QueueLst myqueue; std::default_random_engine gen(std::random_device{}()); std::uniform_real_distribution distr(0,5); std::cout< generateRandomQueueListString(){ ulong dim = getDimension(); std::string tmp; QueueLst myqueue; std::default_random_engine gen(std::random_device{}()); std::uniform_int_distribution dist(1,5); std::cout< generateRandomQueueVecInt(){ ulong dim = getDimension(); int tmp; QueueVec myqueue; std::default_random_engine gen(std::random_device{}()); std::uniform_int_distribution dist(0,1000); std::cout< generateRandomQueueVecFloat(){ ulong dim = getDimension(); float tmp; QueueVec myqueue; std::default_random_engine gen(std::random_device{}()); std::uniform_real_distribution distr(0,5); std::cout< generateRandomQueueVecString(){ ulong dim = getDimension(); std::string tmp; QueueVec myqueue; std::default_random_engine gen(std::random_device{}()); std::uniform_int_distribution dist(1,5); std::cout< generateRandomStackLstInt(){ ulong dim = getDimension(); StackLst myvec; std::default_random_engine gen(std::random_device{}()); std::uniform_int_distribution dist(0,1000); std::cout< generateRandomStackLstFloat(){ ulong dim = getDimension(); StackLst myvec; std::default_random_engine gen(std::random_device{}()); std::uniform_real_distribution distr(0,5); std::cout< generateRandomStackLstString(){ ulong dim = getDimension(); StackLst myvec; std::default_random_engine gen(std::random_device{}()); std::uniform_int_distribution dist(1,5); std::cout< generateRandomStackVecInt(){ ulong dim = getDimension(); StackVec myvec; std::default_random_engine gen(std::random_device{}()); std::uniform_int_distribution dist(0,1000); std::cout< generateRandomStackVecFloat(){ ulong dim = getDimension(); StackVec myvec; std::default_random_engine gen(std::random_device{}()); std::uniform_real_distribution distr(0,5); std::cout< generateRandomStackVecString(){ ulong dim = getDimension(); StackVec myvec; std::default_random_engine gen(std::random_device{}()); std::uniform_int_distribution dist(1,5); std::cout< character('a','z'); char newString[dim+1]; for(int i=0;i>dimension; return dimension; }