Хотя у вас есть правильная идея с вложенными циклами, ваш текущий код ничего не делает, кроме вывода нескольких пробелов и новых строк.Давайте посмотрим на ваш код построчно:
for ( int i=0 ; i < 5; i++)
Итератор в этом цикле будет начинаться с нуля и заканчиваться в четыре.Хотя начинать с нуля приемлемо во многих случаях, здесь гораздо проще начать с 1. Итак, его следует изменить на следующее:
for (int = 1; i <= 5; i++)
Теперь следующая строка.
cout << " ";
Все, что это делает, это печатает пробел.У вас есть номер, но вы ничего не делаете с ним.Вы должны напечатать i
перед пробелом, вот так:
cout << i << " ";
Мы снова столкнемся с проблемами во втором (внутреннем) цикле.
for ( int j = 0; j>=i; j ++)
cout << endl;
Хорошо, что вы инициализируетеj
до нуля.Однако ваше условное выражение j >= i
означает, что цикл продолжит выполнение до тех пор, пока j
больше или равно i
. Вы хотите, чтобы он работал до тех пор, пока он меньше или равендо девяти.Кроме того, все, что вы делаете внутри цикла, это печать новой строки.Вы должны изменить его, чтобы напечатать продукт i
и j
:
for (int j = 0; j <= 9; j++)
cout << (i * j) << " ";
Когда вы соберете все это вместе, вы должны получить что-то вроде следующего кода.Обратите внимание, что я добавил дополнительное форматирование и изменил несколько идентификаторов для ясности.
#include <iostream>
#include <iomanip> // Needed for std::setw, which makes sure everything lines up.
int main()
{
for (int firstNumber = 1; firstNumber <= 5; firstNumber++)
{
std::cout << std::setw(3) << firstNumber << " | "; // Output the first number of the row. This makes up the first column.
for (int secondNumber = 0; secondNumber <= 9; secondNumber++)
{
std::cout << std::setw(3) << (firstNumber * secondNumber) << " "; // Output the rest of the numbers in the row.
}
std::cout << std::endl; // We're done with the row, so make a linebreak.
}
}
Надеюсь, это поможет!