Untitled
unknown
plain_text
4 years ago
4.1 kB
11
Indexable
using System; using System.Collections.Generic; using System.Text; namespace AbsFac { class Program { static void Main(string[] args) { Table table = new Table(); table.addCol(new TableHeader("AB", 0)); table.addCol(new TableHeader("XY", 0)); table.addCol(new TableHeader("KL", 1)); table.addCol(new TableHeader("WD", 1)); table.addCol(new TableHeader("KK", 0)); table.addRow(); table.addRow(); table.addRow(); table.addRow(); table.addRow(); table.addRow(); Console.WriteLine(table); } } class Table { // lista nagłówków private List<TableHeader> headers; // lista wierszy (każdy wiersz to lista komórek) private List<List<TableData>> rows; public Table() { headers = new List<TableHeader>(); rows = new List<List<TableData>>(); } // dodawanie wiersza public void addRow() { // nowy wiersz List<TableData> row = new List<TableData>(); // wypełniamy komórkami - tyle, ile mamy kolumn foreach (TableHeader col in headers) switch(col.getTyp()) { case 0: row.Add(new TableDataInt()); break; case 1: row.Add(new TableDataString()); break; } // dodajemy do listy wierszy rows.Add(row); } // dodawanie kolumny public void addCol(TableHeader header) { // dodajemy do listy nagłówków headers.Add(header); // dodajemy po jednej komórce do każdego wiersza foreach (List<TableData> row in rows) { switch(header.getTyp()) { case 0: row.Add(new TableDataInt()); break; case 1: row.Add(new TableDataString()); break; } } } // do wypisywania tabeli public override string ToString() { StringBuilder result = new StringBuilder(); result.Append("| "); result.AppendJoin(" | ", headers); result.AppendLine(" |"); result.Insert(result.Length, "+----", headers.Count); result.AppendLine("+"); foreach (List<TableData> row in rows) { result.Append("| "); result.AppendJoin(" | ", row); result.AppendLine(" |"); } return result.ToString(); } } interface TableData { protected static readonly Random rnd = new Random(); } class TableDataInt : TableData { private int data; public TableDataInt() { data = 10 + TableData.rnd.Next(90); } public override String ToString() { return data.ToString(); } } class TableDataString: TableData { private string data; public TableDataString() { data = "st"; } public override string ToString() { return data.ToString(); } } class TableHeader { private String name; private int typ; public TableHeader(String name, int typ) { this.name = name; this.typ = typ; } public override String ToString() { return name; } public int getTyp() { return this.typ; } } }
Editor is loading...