From 30baaff5635c3a8a4379695bb15f98f9b31748cf Mon Sep 17 00:00:00 2001 From: Zastian Pretorius Date: Wed, 20 Jul 2022 14:16:48 +0100 Subject: [PATCH] added table printting helper --- src/helpers/mod.rs | 1 + src/helpers/table_printers.rs | 49 ++++++++++++++++++ src/main.rs | 1 + src/simplex/simplex.rs | 96 +++++++++++++++++------------------ 4 files changed, 99 insertions(+), 48 deletions(-) create mode 100644 src/helpers/mod.rs create mode 100644 src/helpers/table_printers.rs diff --git a/src/helpers/mod.rs b/src/helpers/mod.rs new file mode 100644 index 0000000..7f39a04 --- /dev/null +++ b/src/helpers/mod.rs @@ -0,0 +1 @@ +pub mod table_printers; diff --git a/src/helpers/table_printers.rs b/src/helpers/table_printers.rs new file mode 100644 index 0000000..1346052 --- /dev/null +++ b/src/helpers/table_printers.rs @@ -0,0 +1,49 @@ +use prettytable::{Table, Row, Cell}; +use std::vec::Vec; +pub fn print_first_table(table: &Vec>){ + let mut print_table = Table::new(); + let mut titles: Vec = vec![]; + for title in 0..table[0].len(){ + if title == table[1].len() - 1 { + titles.push(Cell::new("rhs")); + } else if title < table[0].len() / 2 { + titles.push(Cell::new(&format!("x{}",title+1))); + } else { + titles.push(Cell::new(&format!("s{}",title - table[0].len() / 2 + 1))); + } + } + print_table.add_row(Row::new(titles)); + for i in 0..table.len() { + let mut cells: Vec = vec![]; + for j in 0..table[i].len(){ + cells.push(Cell::new(&table[i][j].to_string())); + }; + print_table.add_row(Row::new(cells)); + }; + print_table.printstd(); + +} + + +pub fn print_table(table: &Vec>,pivot_col: &usize, pivot_row: &usize) { + let mut print_table = Table::new(); + let mut titles: Vec = vec![]; + for title in 0..table[0].len(){ + if title == table[0].len() - 1 { + titles.push(Cell::new("rhs")); + } else if title < table[0].len() / 2 { + titles.push(Cell::new(&format!("x{}",title+1))); + } else { + titles.push(Cell::new(&format!("s{}",title - table[0].len() / 2 + 1))); + } + } + print_table.add_row(Row::new(titles)); + for i in 0..table.len() { + let mut cells: Vec = vec![]; + for j in 0..table[i].len(){ + cells.push(Cell::new(&table[i][j].to_string()).style_spec(if j == *pivot_col || i == *pivot_row+1{ "Fgb"} else {""})); + }; + print_table.add_row(Row::new(cells)); + }; + print_table.printstd(); +} diff --git a/src/main.rs b/src/main.rs index 3dfb915..7d06069 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,5 @@ mod simplex; +mod helpers; use simplex::simplex::simplex; fn main() { simplex(); diff --git a/src/simplex/simplex.rs b/src/simplex/simplex.rs index 74ca838..2ff19f7 100644 --- a/src/simplex/simplex.rs +++ b/src/simplex/simplex.rs @@ -1,6 +1,6 @@ use std::io::{self, Write}; use std::vec::Vec; -use prettytable::{Table, Row, Cell}; +use crate::helpers::table_printers::{print_table, print_first_table}; struct Coll { restriction: Vec, sign: String, @@ -78,53 +78,53 @@ fn check_optimal(table: &Vec>) -> bool { } } -fn print_first_table(table: &Vec>){ - let mut print_table = Table::new(); - let mut titles: Vec = vec![]; - for title in 0..table[0].len(){ - if title == table[1].len() - 1 { - titles.push(Cell::new("rhs")); - } else if title < table[0].len() / 2 { - titles.push(Cell::new(&format!("x{}",title+1))); - } else { - titles.push(Cell::new(&format!("s{}",title - table[0].len() / 2 + 1))); - } - } - print_table.add_row(Row::new(titles)); - for i in 0..table.len() { - let mut cells: Vec = vec![]; - for j in 0..table[i].len(){ - cells.push(Cell::new(&table[i][j].to_string())); - }; - print_table.add_row(Row::new(cells)); - }; - print_table.printstd(); - -} - - -fn print_table(table: &Vec>,pivot_col: &usize, pivot_row: &usize) { - let mut print_table = Table::new(); - let mut titles: Vec = vec![]; - for title in 0..table[0].len(){ - if title == table[0].len() - 1 { - titles.push(Cell::new("rhs")); - } else if title < table[0].len() / 2 { - titles.push(Cell::new(&format!("x{}",title+1))); - } else { - titles.push(Cell::new(&format!("s{}",title - table[0].len() / 2 + 1))); - } - } - print_table.add_row(Row::new(titles)); - for i in 0..table.len() { - let mut cells: Vec = vec![]; - for j in 0..table[i].len(){ - cells.push(Cell::new(&table[i][j].to_string()).style_spec(if j == *pivot_col || i == *pivot_row+1{ "Fgb"} else {""})); - }; - print_table.add_row(Row::new(cells)); - }; - print_table.printstd(); -} +//fn print_first_table(table: &Vec>){ +// let mut print_table = Table::new(); +// let mut titles: Vec = vec![]; +// for title in 0..table[0].len(){ +// if title == table[1].len() - 1 { +// titles.push(Cell::new("rhs")); +// } else if title < table[0].len() / 2 { +// titles.push(Cell::new(&format!("x{}",title+1))); +// } else { +// titles.push(Cell::new(&format!("s{}",title - table[0].len() / 2 + 1))); +// } +// } +// print_table.add_row(Row::new(titles)); +// for i in 0..table.len() { +// let mut cells: Vec = vec![]; +// for j in 0..table[i].len(){ +// cells.push(Cell::new(&table[i][j].to_string())); +// }; +// print_table.add_row(Row::new(cells)); +// }; +// print_table.printstd(); +// +//} +// +// +//fn print_table(table: &Vec>,pivot_col: &usize, pivot_row: &usize) { +// let mut print_table = Table::new(); +// let mut titles: Vec = vec![]; +// for title in 0..table[0].len(){ +// if title == table[0].len() - 1 { +// titles.push(Cell::new("rhs")); +// } else if title < table[0].len() / 2 { +// titles.push(Cell::new(&format!("x{}",title+1))); +// } else { +// titles.push(Cell::new(&format!("s{}",title - table[0].len() / 2 + 1))); +// } +// } +// print_table.add_row(Row::new(titles)); +// for i in 0..table.len() { +// let mut cells: Vec = vec![]; +// for j in 0..table[i].len(){ +// cells.push(Cell::new(&table[i][j].to_string()).style_spec(if j == *pivot_col || i == *pivot_row+1{ "Fgb"} else {""})); +// }; +// print_table.add_row(Row::new(cells)); +// }; +// print_table.printstd(); +//} fn pivot_table(table: &mut Vec>, pivot_row: usize, pivot_col: usize) -> Vec> { // firnd the pivot point