Untitled
unknown
plain_text
4 years ago
4.1 kB
15
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...