-
Notifications
You must be signed in to change notification settings - Fork 0
/
prog.cpp
129 lines (117 loc) · 4.56 KB
/
prog.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
/******************************************************
** Program: prog.cpp
** Author: Andy James
** Date: 6/6/2021
** Description: runs through functions of a linked list
** Input: none
** Output: none
******************************************************/
#include <iostream>
#include <string>
#include "linked_list.h"
using namespace std;
void entering_options(Linked_List&);
int number_check();
int input_check(int,int);
/****************************************************************************************
** Function: int main()
** Description: runs through loop for creating and manipulating linked list
** Parameters: none
** Pre-Condition: none
** Post-Condition: none
*****************************************************************************************/
int main() {
cout << "\033[2J\033[1;1H"; //clear screen
int choice = 1;
cout << "hello welcome to the list thing" << endl;
Linked_List list;
while (choice == 1) {
list.clear();
entering_options(list);
cout << "your current list is : ";
list.print();
cout << "1 for ascending, 2 for descending: ";
choice = input_check(1,2);
(choice == 1) ? list.sort_ascending() : list.sort_descending(); //checks for sort type
cout << "your linked list is now: ";
list.print();
cout << "you have " << list.num_primes() << " prime number(s) in your list." << endl;
cout << "would you like to go again? 1 for yes, 2 for no: ";
choice = input_check(1,2);
}
list.clear();
}
/****************************************************************************************
** Function: void entering_options(Linked& list)
** Description: lets user choose how to enter a number into the linked list
** Parameters: Linked_List&
** Pre-Condition: pass in a adress to a linked list class
** Post-Condition: none
*****************************************************************************************/
void entering_options(Linked_List& list) {
int num;
int option;
int cont = 1;
while(cont == 1) {
cout << "please enter a number: ";
num = number_check();
cout << "1 for push front, 2 for push back, 3 for insert: ";
option = input_check(1,3);
if(option == 1) { // push front option
cout << "the list is now length "<< list.push_front(num) << endl;
}
else if(option == 2) { // push back option
cout << "the list is now length "<< list.push_back(num) << endl;
}
else { // index option
cout << "the list is length " << list.get_length() << ", what index: ";
option = input_check(0,list.get_length());
cout << "the list is now length "<< list.insert(num,option) << endl;
}
cout << "Do you want another number? 1 for yes, 2 for no: ";
cont = input_check(1,2);
cout << "\033[2J\033[1;1H"; //clear screen
}
}
/****************************************************************************************
** Function: number_check()
** Description: checks if user input within the funciton is a number
** Parameters: none
** Pre-Condition: none
** Post-Condition: return an int if the user inputs an int
*****************************************************************************************/
int number_check() {
int a;
while(true) {
cin >> a;
if(cin.fail()) { //if not an int
cin.clear();
cin.ignore(1000000,'\n');
cout << "error in input, please try again: ";
}
else if(!cin.fail()) { //if an int
return a;
}
}
}
/****************************************************************************************
** Function: int input_check(int lower, int upper)
** Description: checks to see if number inputed is between a certain bounds
** Parameters: int lower, int upper
** Pre-Condition: pass in a int for lower bounds, and int for upper bounds
** Post-Condition: return a number once user types between the bounds
*****************************************************************************************/
int input_check(int lower,int upper) {
int num;
bool cont = true;
while(cont) {
num = number_check();
if(num < lower || num > upper) { // if not on or between bounds
cout << "enter a number from " << lower << " to " << upper << ": ";
}
else {
cont = false;
}
}
return num;
}