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

219
26 июня 2022, 08:20
#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 , почему выводит только первую строку ? Если я сделал вложенный цикл?

Answer 1

Вот ведь интересно, вы не задумывались, что будет, если напишете 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");
    }
}
Answer 2

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

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++;
}

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

Answer 3

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

#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);
    }
}
Answer 4
# 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;
     }
  }
READ ALSO
Глобальное событие смены раскладки клавиатуры

Глобальное событие смены раскладки клавиатуры

Мне нужно знать, какая установлена раскладка клавиатуры пользователя в данный момент (использую в CALLBACK функции)

156
Как получить вектор с нужным capacity?

Как получить вектор с нужным capacity?

Может ли новосозданный вектор после вызова метода reserve(x) иметь capacity больше, чем x? Если да, то правда ли, что чтобы получить вектор с нужным...

191
.exe вызвал срабатывание точки останова

.exe вызвал срабатывание точки останова

Не понимаю, в чем ошибка, ведь значение вычисляется правильно, иногда даже выводиться в консоль, но с вводом первого числа ,как 1, а второго...

234
Функция завершается не дойдя до return с++

Функция завершается не дойдя до return с++

вот код программы, из книги олимпиадное программированиеОн должен решать задачу о количестве способов разместить n ферзей на доске n*n чтобы...

177