Skip to content

Commit

Permalink
calculate correctly currect average
Browse files Browse the repository at this point in the history
  • Loading branch information
divear committed Jul 27, 2024
1 parent f104901 commit 98dfd2b
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 22 deletions.
Binary file modified assets/screenshot.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
80 changes: 58 additions & 22 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ struct ZnamkaStruct {
predmet: String,
nazev: String,
znamka: f32,
vaha: f32,
}
// struct PredmetStruct {
// predmet: String,
Expand All @@ -27,7 +28,7 @@ fn process_two(znamka: &str) -> Option<f32> {
let returned = znamka.chars().nth(0).unwrap().to_string();
let returned_num: f32 = returned.parse().expect("a proper float");
println!("{:?}", returned_num);
Some(returned_num + 0.25)
Some(returned_num + 0.5)
}
fn process_longer(znamka: &str) -> Option<f32> {
// 9 / 15 = 60% → 3 etc.
Expand All @@ -49,7 +50,6 @@ fn process_percent(znamka: &str) -> Option<f32> {
pub fn main() -> Result<(), Box<dyn Error>> {
let browser = Browser::default()?;
let tab = browser.new_tab()?;

dotenv().expect(".env file not found - follow instructions in the README");
let username = env::var("USERNAME").expect("USERNAME environment variable not set");
let password = env::var("PASSWORD").expect("PASSWORD environment variable not set");
Expand Down Expand Up @@ -113,7 +113,7 @@ pub fn main() -> Result<(), Box<dyn Error>> {

println!("{:?}", all);
let new_znamka = all[2];
if all[0] == "Chování" {
if all[0] == "Chování" || all[1] == "Vysvědčení" {
continue;
}

Expand Down Expand Up @@ -159,12 +159,31 @@ pub fn main() -> Result<(), Box<dyn Error>> {
};
match created_znamka {
Ok(created_znamka) => {
let new_znamka_instance = ZnamkaStruct {
predmet: all[0].to_string(),
nazev: all[1].to_string(),
znamka: created_znamka,
};
everything_vec.push(new_znamka_instance);
if let Some(start) = all[1].find('∙') {
if let Some(end) = all[1].find('×') {
if start < end {
let start_pos = start + '∙'.len_utf8();
let result = &all[1][start_pos..end].trim();
let vaha = result.parse().unwrap();
println!("vaha: {}", vaha);
let new_znamka_instance = ZnamkaStruct {
predmet: all[0].to_string(),
nazev: all[1].to_string(),
znamka: created_znamka,
vaha,
};
println!("vaha saved: {}", new_znamka_instance.vaha);
println!("znamka saved: {}", new_znamka_instance.znamka);
everything_vec.push(new_znamka_instance);
} else {
println!("The '×' character comes before the '∙' character.");
}
} else {
println!("The '×' character was not found.");
}
} else {
println!("The '∙' character was not found.");
}
}
Err(_) => {
println!("error: the created_znamka isn't valid");
Expand All @@ -184,20 +203,37 @@ pub fn main() -> Result<(), Box<dyn Error>> {
// if (j == i) {}
// }
}
print!("Pro který předmět chcete vypočítat průměr?");

let stdin = io::stdin();
let predmet_pick_index: usize = stdin.lock().lines().next().unwrap().unwrap().parse()?;
// random order, because HashSet
let predmet_pick = Vec::from_iter(&set_existujicich_predmetu)[predmet_pick_index];
println!("\nVybrali jste: {}", predmet_pick);
let mut picked_predmet_znamky: Vec<f32> = vec![];
for i in &everything_vec {
if i.predmet == **predmet_pick {
picked_predmet_znamky.push(i.znamka);
for _ in 1..10 {
print!("Pro který předmět chcete vypočítat průměr? ");
io::stdout().flush().unwrap(); // Ensures the prompt is displayed before waiting for input
let predmet_pick_index: usize = io::stdin()
.lock()
.lines()
.next()
.unwrap()
.unwrap()
.parse()?;
// random order, because HashSet
let predmet_pick = Vec::from_iter(&set_existujicich_predmetu)[predmet_pick_index];
println!("\nVybrali jste: {}", predmet_pick);
let mut x: Vec<f32> = vec![];
let mut picked_predmet_znamky: Vec<f32> = vec![];
let mut picked_predmet_vahy: Vec<f32> = vec![];
for i in &everything_vec {
if i.predmet == **predmet_pick {
x.push(i.znamka);
picked_predmet_znamky.push(i.znamka * i.vaha);
picked_predmet_vahy.push(i.vaha);
}
}
println!("{:?}", x);
println!("{:?}", picked_predmet_vahy);
println!("{:?}", picked_predmet_znamky);
println!(
"Váš stávající průměr: {}",
picked_predmet_znamky.clone().into_iter().sum::<f32>()
/ picked_predmet_vahy.clone().into_iter().sum::<f32>()
);
}
println!("{:?}", picked_predmet_znamky);

Ok(())
}
1 change: 1 addition & 0 deletions todo.todo
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@
- [x] start checking: if the grade page takes too long, try again
- [ ] add the 15 sec timer; maybe on another thread(?);
- [ ] make it differenciate individual school subjects
- [ ] make it ask you your credentials if there are none found in .env

0 comments on commit 98dfd2b

Please sign in to comment.