C ++ Programming Help!Это не будет работать? - PullRequest
0 голосов
/ 28 марта 2011

Первый столбец содержит цифры от 1 до 5 Последующие столбцы содержат результат умножения числа в Первый столбец с номерами от 0 до 9

Хорошо, я зашел так далеко, но он не работает, и я понятия не имею, почему! если вы можете указать мне правильное направление, это было бы очень полезно :) 1003 *

#include <iostream>
using namespace std;

int main()
{
    for ( int i=0 ; i < 5; i++)
    { 
        cout << " ";
        // end for

        for ( int j = 0; j>=i; j ++) 
            cout << endl;
    }  // end for

    return 0;
}   //end of main function

Ответы [ 3 ]

3 голосов
/ 28 марта 2011

Первый столбец содержит числа от 1 до 5 В последующих столбцах содержится результат умножения числа в первом столбце на числа от 0 до 9

Ччч ..

  • В вашем фрагменте внешний цикл работает от 0 до 4. Но вопрос от 1 до 5.
  • Внутренний цикл должен работать в формах от 0 до 9, что означает, что он не зависит от i значение внешнего цикла.Итак, условие для внутреннего цикла j>=i неверно.
1 голос
/ 28 марта 2011

Хотя у вас есть правильная идея с вложенными циклами, ваш текущий код ничего не делает, кроме вывода нескольких пробелов и новых строк.Давайте посмотрим на ваш код построчно:

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.
    }
}

Надеюсь, это поможет!

0 голосов
/ 28 марта 2011

Если я пойму, что вы пытаетесь сделать, ваш код никогда не сработает.

Вы хотите что-то вроде этого:

for(int i=1; i <=5; i++)
{
   std::cout << i << " ";
   for(int j=0; j <=9; j++)
     std::cout << i*j << " ";

   std::cout << std::endl;
} 

Форматирование не будет идеальным, но оно ближе к тому, что вы, похоже, ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...