Skip to content

Commit a8acd75

Browse files
committed
added more functions to ete program
1 parent bb9126a commit a8acd75

File tree

1 file changed

+121
-2
lines changed

1 file changed

+121
-2
lines changed

ete-program/src/main.rs

Lines changed: 121 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
use std::io;
1+
use std::{io, ops::Deref};
22

3+
#[derive(PartialEq)]
34
enum MealPreference {
45
VEG,
56
NONVEG,
@@ -85,15 +86,133 @@ fn display_main_manifest(passengers: &Vec<Passenger>) {
8586
println!("Passenger #{}", i + 1);
8687
println!("Name: {}", passengers[i].name);
8788
println!(
88-
"Meal Preference: {}",
89+
"Meal Preference: {}\n",
8990
as_a_string(&passengers[i].meal_preference)
9091
);
9192
}
9293
println!("\n");
9394
}
9495

96+
// Display Veg Manifest
97+
fn display_veg_manifest(passengers: &Vec<Passenger>) {
98+
println!("------------------\nVeg Manifest\n------------------");
99+
for i in 0..passengers.len() {
100+
if passengers[i].meal_preference == MealPreference::VEG {
101+
println!("Passenger #{}", i + 1);
102+
println!("Name: {}", passengers[i].name);
103+
}
104+
}
105+
println!("\n");
106+
}
107+
108+
// Display Non-Veg Manifest
109+
fn display_nonveg_manifest(passengers: &Vec<Passenger>) {
110+
println!("------------------\nNon-Veg Manifest\n------------------");
111+
for i in 0..passengers.len() {
112+
println!("Passenger #{}", i + 1);
113+
println!("Name: {}", passengers[i].name);
114+
}
115+
println!("\n");
116+
}
117+
118+
// Count People on Meal Preferences
119+
fn count_meal_prefs(passengers: &Vec<Passenger>) {
120+
println!("----------------\nCount of People Grouped on Meal Preferences\n-----------------\n");
121+
let (mut veg, mut nonveg, mut vegan, mut jain, mut gltnfr, mut kids): (
122+
i32,
123+
i32,
124+
i32,
125+
i32,
126+
i32,
127+
i32,
128+
) = (0, 0, 0, 0, 0, 0);
129+
for i in 0..passengers.len() {
130+
match passengers[i].meal_preference {
131+
MealPreference::VEG => {
132+
veg += 1;
133+
}
134+
MealPreference::NONVEG => {
135+
nonveg += 1;
136+
}
137+
MealPreference::VEGAN => {
138+
vegan += 1;
139+
}
140+
MealPreference::JAIN => {
141+
jain += 1;
142+
}
143+
MealPreference::GLUTENFREE => {
144+
gltnfr += 1;
145+
}
146+
MealPreference::KIDS => {
147+
kids += 1;
148+
}
149+
}
150+
}
151+
println!(
152+
"Veg: {}\nNon-Veg: {}\nVegan: {}\nJain:{}\nGluten-Free: {}\nKids: {}\n\n",
153+
veg, nonveg, vegan, jain, gltnfr, kids
154+
);
155+
}
156+
157+
// Group people based on Meal Preferences
158+
fn group_on_meal_prefs(passengers: &Vec<Passenger>) {
159+
let mut veg_pass: Vec<&Passenger> = Vec::new();
160+
let mut nonveg_pass: Vec<&Passenger> = Vec::new();
161+
let mut vegan_pass: Vec<&Passenger> = Vec::new();
162+
let mut jain_pass: Vec<&Passenger> = Vec::new();
163+
let mut gltnfr_pass: Vec<&Passenger> = Vec::new();
164+
let mut kids_pass: Vec<&Passenger> = Vec::new();
165+
for i in 0..passengers.len() {
166+
let temp: &Passenger = &passengers[i];
167+
match passengers[i].meal_preference {
168+
MealPreference::VEG => {
169+
veg_pass.push(temp);
170+
}
171+
MealPreference::NONVEG => {
172+
nonveg_pass.push(temp);
173+
}
174+
MealPreference::VEGAN => {
175+
vegan_pass.push(temp);
176+
}
177+
MealPreference::JAIN => {
178+
jain_pass.push(temp);
179+
}
180+
MealPreference::GLUTENFREE => {
181+
gltnfr_pass.push(temp);
182+
}
183+
MealPreference::KIDS => {
184+
kids_pass.push(temp);
185+
}
186+
}
187+
}
188+
println!("\nGrouped on Meal Prefs:\n");
189+
for i in 0..veg_pass.len() {
190+
println!("{}", veg_pass[i].deref().name);
191+
}
192+
for i in 0..nonveg_pass.len() {
193+
println!("{}", nonveg_pass[i].deref().name);
194+
}
195+
for i in 0..vegan_pass.len() {
196+
println!("{}", vegan_pass[i].deref().name);
197+
}
198+
for i in 0..jain_pass.len() {
199+
println!("{}", jain_pass[i].deref().name);
200+
}
201+
for i in 0..gltnfr_pass.len() {
202+
println!("{}", gltnfr_pass[i].deref().name);
203+
}
204+
for i in 0..kids_pass.len() {
205+
println!("{}", kids_pass[i].deref().name);
206+
}
207+
println!("\n");
208+
}
209+
95210
fn main() {
96211
let mut passengers: Vec<Passenger> = Vec::new();
97212
read_input(&mut passengers);
213+
count_meal_prefs(&passengers);
98214
display_main_manifest(&passengers);
215+
display_veg_manifest(&passengers);
216+
display_nonveg_manifest(&passengers);
217+
group_on_meal_prefs(&passengers);
99218
}

0 commit comments

Comments
 (0)