Создание столбца заголовка через "для" l oop в таблице умножения дает гибриби sh вместо желаемого результата - PullRequest
0 голосов
/ 17 марта 2020

Мне нужно создать таблицу умножения с числом от 1 до 20, я только что сделал это, используя 2 вложенных для цикла. У меня проблемы с форматированием таблицы - вывод в консоли должен выглядеть точно так же, как ваша средняя таблица умножения в учебнике, горизонтальный и вертикальный ряд чисел, и когда вы находите пересечение между горизонтальным и вертикальным числа вы найдете свое умножение. Я сделал горизонтальную строку, используя проверку «первого прохода», как вы можете видеть в приведенном ниже коде:

#include <iostream>
#include <iomanip>

using namespace std;


int main()

{

    int br;
    int firstpass = 1;

    cin >> br;

    if (br > 1 && br < 21)

    {
        if (firstpass = 1)
        {
            for (int h = 0; h <= br; h++)
                cout << setw(5) << h << " ";

            cout << endl;
            firstpass = 0;
        }

        for (int a = 1; a <= br; a++)

        {


            for (int b = 1; b <= br; b++)
                    cout << setw(5) << a * b << " ";
            cout << endl;

        }
    }

    return 0;

}

, но проблема с кодом выше в том, что он не создает вертикальный столбец ( перед каждым выводом во вложенном l oop должно быть число а), поэтому я добавил проверку «второго прохода». Цель состояла в том, чтобы проверить, является ли это начало новой строки через «secondpass», если это так, вывести текущее значение «a», затем l ie бездействующий, пока l oop не закончится и второй проход не будет сброшен, но вместо этого просто добавив значение «a» в начале строки, а затем выведя остальную часть строки, как в первом примере, это показывает чистый гиббери sh, который я не могу распутать.

#include <iostream>
#include <iomanip>

using namespace std;


int main()

{

    int br;
    int firstpass = 1;
    int secondpass = 1;

    cin >> br;

    if (br > 1 && br < 21)

    {
        if (firstpass = 1)
        {
            for (int h = 0; h <= br; h++)
                cout << setw(5) << h;

            cout << endl;
            firstpass = 0;
        }

        for (int a = 1; a <= br; a++)

        {


            for (int b = 1; b <= br; b++)

            {

                if (secondpass = 1)
                {
                    cout << setw(5) << a;
                    secondpass = 0;
                }
                cout << setw(5) << a << a * b;

            }

            secondpass = 1;
            cout << endl;


        }
    }

    return 0;

}

Что я делаю не так? Я уверен, что эта лихорадка, под которой я нахожусь, не совсем помогает, но сейчас я чувствую себя очень глупо. Заранее спасибо!

1 Ответ

0 голосов
/ 17 марта 2020
#include <iostream>
#include <iomanip>

using namespace std;


int main()

{

    int br;

    cin >> br;

    if (br > 1 && br < 21)

    {

        for (int a = 0; a <= br; a++)

        {

            for (int b = 0; b <= br; b++)

            {
                if (b == 0)
                    cout << setw(5) << a;
                else if (a == 0)
                    cout << setw(5) << b;
                else
                    cout << setw(5) << a * b;
            }

            cout << endl;

        }

    }

    return 0;

}

Вот ответ для кого-то в конце концов, наконец взломали его. До сих пор не знаю, почему вложенные циклы for выглядели жуткими при попытке добавить другого персонажа оригинальным способом, который я сделал, но я думаю, что это вопрос в другой раз.

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