Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Сколько лет учиться на программиста?

13.09.20 20:25
Re: Сколько лет учиться на программиста?
 
uscheswoi_82 завсегдатай
в ответ AlexNek 13.09.20 15:02

Вот что-то за 5 часов накалякал, проблема только с кортежем, в методе swap_column, т.к. у меня net 3.5:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication1 {

public class TSubItem {

public String Text { get; set; }

public int row_id { get; set; }

}

public class SubItem {

private List<TSubItem> Item = null;

public SubItem() {

Item = new List<TSubItem>();

}

public void add_subitem(String text, int row_id) {

Item.Add(new TSubItem() { Text = text, row_id = row_id });

}

public List<TSubItem> get_subitems() {

return Item;

}

}

public class Item {

public int column_id { get; set; }

public int row_id { get; set; }

public String Text { get; set; }

public SubItem subitem { get; set; }

}

public class Header {

public int column_id { get; set; }

public String Text { get; set; }

public int x { get; set; }

}

class Grid {

private List<Item> items;

private List<Header> headers;

private int y = 0;

public Grid() {

items = new List<Item>();

headers = new List<Header>();

y = 1;

}

public void add_header(String text, int x, int column_id) {

headers.Add(new Header() { Text = text, x = x, column_id = column_id });

}

public void add_item(String item, int column_id, int row_id) {

this.add_item(item, column_id, row_id, null);

}

public void add_item(String item, int column_id, int row_id, SubItem si) {

if(si != null)

items.Add(new Item() { Text = item, subitem = si, column_id = column_id, row_id = row_id });

else

items.Add(new Item() { Text = item, column_id = column_id, row_id = row_id});

}

public void swap_column(int column_id, int to_column_id) {

//https://entityframework.net/ru/knowledge-base/33545249/

//https://stackoverrun.com/ru/q/10321290

}

public void render() {

if (headers.Count <= 0 || items.Count <= 0) return;

foreach (var h in headers) {

Console.SetCursorPosition(h.x, 1);

Console.WriteLine(h.Text);

y++;

}

var r = from head in headers join item in items on head.column_id equals item.column_id select new { subitem = item.subitem, x = head.x, y = item.row_id, Text = item.Text };

foreach (var item in r) {

Console.SetCursorPosition(item.x, item.y);

Console.WriteLine(item.Text);

if (item.subitem != null) {

foreach (var subitem in item.subitem.get_subitems()) {

Console.SetCursorPosition(item.x, subitem.row_id);

Console.Write(" " + subitem.Text);

}

}

}

}

}

class Program {

static void Main(string[] args) {

SubItem si = new SubItem();

si.add_subitem("xx", 3);

si.add_subitem("yy", 4);

Grid g = new Grid();

g.add_header("Firstname", 1, 1);

g.add_header("Lastname", 30, 2);

g.add_header("Birhday", 30, 3);

g.add_item("AA", 1, 2, si);

g.add_item("BB", 2, 2);

g.add_item("CC", 1, 5);

g.render();

for(int j = 0; j < 5; j++) Console.WriteLine("");

Console.ReadKey();

Console.Clear();

g.swap_column(2, 1);

g.render();

for (int j = 0; j < 5; j++) Console.WriteLine("");

}

}

}

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
 

Перейти на