C++ Таблица умножения

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
    setlocale(0, "rus");
    const int size = 12;
    int i = 0, j = 0;
    printf("Таблица умножения %d%s%d", size, " на ", size);
    printf("\n  |");
    for (int u = 1; u <= 12; u++)
    {
        printf("%d    ", u);
    }
    printf("\n");
    for (int u = 1; u <= 30; u++)
    {
        printf("___");
    }
    printf("\n");
    for (int u = 1; u <= 12; u++);
    {
        int l = 1;
        printf("%d%s", l, " |");
        for (int g = 1; g <= 12; g++)
        {
            printf("%d    ", l *g);
        }
        l++;
    }
}

Нужно сделать таблицу 12x12 , почему выводит только первую строку ? Если я сделал вложенный цикл?


Ответы (4 шт):

Автор решения: Andrej Levkovitch

Ничего не смущает в этом фрагменте?

for (int u = 1; u <= 12; u++);
{
    int l = 1;
    printf("%d%s", l, " |");
    for (int g = 1; g <= 12; g++)
    {
        printf("%d    ", l *g);
    }
    l++;
}

Советую использовать другое форматирование кода, чтобы избегать таких проблем, вроде расположения открывающей скобки не в новой строке, а в конце предыдущей.

→ Ссылка
Автор решения: Harry

Вот ведь интересно, вы не задумывались, что будет, если напишете size = 13? А везде в коде жестко прошиты 12...

Если уже используете переменную - то используйте именно ее.

#include <stdio.h>
int main()
{
    //setlocale(0, "rus");
    const int size = 12;
    printf("Таблица умножения %d на %d\n", size, size);
    printf("    |");
    for (int u = 1; u <= size; u++)
    {
        printf("%4d|", u);
    }
    printf("\n");
    for (int u = 0; u <= size; u++)
    {
        printf("----+");
    }
    printf("\n");
    for (int u = 1; u <= size; u++)
    {
        printf("%4d|", u);
        for (int v = 1; v <= size; v++)
        {
            printf("%4d|", u*v);
        }
        printf("\n");
        for (int v = 0; v <= size; v++)
        {
            printf("----+");
        }
        printf("\n");
    }
}
→ Ссылка
Автор решения: TigerTV.ru

Можно сократить код выделением функции:

#include <cstdio>

void printLine(int size, int v) {
    for (int u = 1; u <= size; u++) {
        printf("%4d|", u*v);
    }
    printf("\n");
    for (int u = 0; u <= size; u++) {
        printf("----+");
    }
    printf("\n");
}

int main() {
    const int size = 12;
    printf("Таблица умножения %d на %d\n", size, size);
    // header
    printf("    |");
    printLine(size, 1);

    for (int u = 1; u <= size; u++) {
        printf("%4d|", u); // left header
        printLine(size, u);
    }
}

→ Ссылка
Автор решения: Nigjya_ CHANNEL
# include <iostream>
using namespace std;

int main()
 {
   for (int i = 1; i < 10; i++)
     {
       for(int j = 1; j < 10; j++)
         {
           cout << i << " * " << j << " = " << i * j << "\t\t";
         }
       cout << endl;
     }
  }
→ Ссылка