Как сделать таблицу умнож по 5 столбиков вверху, и 4 внизу?
Пока что смог реализовать только в 1 столбик , не приходит в голову как сделать столбики(как в школьной тетради) Пытался через if, через setcursorposition, видимо что не так делаю либо не там пишу, не в том цикле эти условия. Можно 2 варианта решения через if и через set cursor, благодарю
static void tabl()
{
// Console.WriteLine();
for(int a = 1;a <= 9;a++)
{
Console.WriteLine();
for(int b = 1;b <= 9;b++ )
{
Console.Write($"{a} * {b} = {a * b} \n");
}
}
}
Ответы (3 шт):
Держи. Но лучше все таки самому пробовать, пытаться.
static void Main(string[] args)
{
for (int a = 1; a <= 9; a++)
{
for (int b = 1; b <= 9; b++)
{
if (a > 5)
{
Console.SetCursorPosition((a - 6) * 12, b+10);
}
else
{
Console.SetCursorPosition((a - 1) * 12, b);
}
Console.WriteLine($"{a} * {b} = {a * b}");
}
}
Console.SetCursorPosition(0, 20);
}
или чуток хитрее. скобки расставил для наглядности
static void Main(string[] args)
{
for (int a = 1; a <= 9; a++)
{
for (int b = 1; b <= 9; b++)
{
Console.SetCursorPosition(((a % 6) - 1 + (a / 6)) * 12, b + (a / 6 ) * 10);
Console.WriteLine($"{a} * {b} = {a * b}");
}
}
Console.SetCursorPosition(0, 20);
}
SetCursorPosition совершенно лишний. Вы всё сделали правильно, кроме "\n", который и выводит всё в один столбик. Ещё нужно добавить выравнивание в поле фиксированной длинны PadRight:
static void tabl() {
for (int a = 1; a <= 9; a++) {
for (int b = 1; b <= 9; b++ )
Console.Write(($"{a} * {b} = {a * b}").PadRight(12));
Console.WriteLine();
}
}
Ещё посмотрите на такой интересный вариант:
static void tabl() {
for (int a = 9; a > 0; a--) {
for (int b = 1; b <= a; b++ )
Console.Write(($"{a} * {b} = {a * b}").PadRight(12));
Console.WriteLine();
}
}
А вот требуемый вариант 5+4:
static void tabl() {
for (int i = 1, j = 5; i <= 6; i += 5, j = 9) {
for (int a = 1; a <= 9; a++) {
for (int b = i; b <= j; b++ )
Console.Write(($"{a} * {b} = {a * b}").PadRight(12));
Console.WriteLine();
}
Console.WriteLine();
}
}
Вариант с накоплением вывода в строковый массив. В первый элемент выводятся строки для чисел с 1 по 5, во второй - с 6 по 9, в конце элементы "склеиваются" и выводятся в консоль. Единая ширина столбцов сделана через {a * b,2}, где ,2 - означает выравнивание по правому краю, 2 символа. Разделение вывода по элементам массива организовано через индекс parts[b>5?1:0].
static void tabl()
{
string[] parts = {"",""};
for(int a = 0;a++<9;)
{
for(int b = 0;b++<9;)
{
parts[b>5?1:0]+=$"{b} * {a} = {a * b,2}\t";
}
parts[0]+="\n";
parts[1]+="\n";
}
Console.WriteLine(parts[0]+'\n'+parts[1]);
}
1 * 1 = 1 2 * 1 = 2 3 * 1 = 3 4 * 1 = 4 5 * 1 = 5
1 * 2 = 2 2 * 2 = 4 3 * 2 = 6 4 * 2 = 8 5 * 2 = 10
1 * 3 = 3 2 * 3 = 6 3 * 3 = 9 4 * 3 = 12 5 * 3 = 15
1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16 5 * 4 = 20
1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25
1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30
1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35
1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40
1 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45
6 * 1 = 6 7 * 1 = 7 8 * 1 = 8 9 * 1 = 9
6 * 2 = 12 7 * 2 = 14 8 * 2 = 16 9 * 2 = 18
6 * 3 = 18 7 * 3 = 21 8 * 3 = 24 9 * 3 = 27
6 * 4 = 24 7 * 4 = 28 8 * 4 = 32 9 * 4 = 36
6 * 5 = 30 7 * 5 = 35 8 * 5 = 40 9 * 5 = 45
6 * 6 = 36 7 * 6 = 42 8 * 6 = 48 9 * 6 = 54
6 * 7 = 42 7 * 7 = 49 8 * 7 = 56 9 * 7 = 63
6 * 8 = 48 7 * 8 = 56 8 * 8 = 64 9 * 8 = 72
6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81