Как создать форму прямоугольника и треугольника в C

#c

#c

Вопрос:

Как мне достичь этого формата, когда я ввел значение int ‘ 245’:

(где, если это нечетное число, это будет прямоугольник, а четное число будет треугольником)

  1
 1 2

 1 
 1 2
 1 2 3
 1 2 3 4

 1 2 3 4 5
 1 2 3 4 5
 1 2 3 4 5
 1 2 3 4 5
 1 2 3 4 5
  

Пока это мой код:

(Казалось, я не могу выводить треугольник и прямоугольник одновременно)

 int n;
int lastDigit;

do
{
    cout << "Enter a positive integer: ";
    cin >> n;

}while ( n <= 1 || n == '0');

cout << endl;

// If even digit - tri
do
{
    lastDigit = n%10;

    if (lastDigit / 2 ==0)
    {
        for (int i = 1; i <= lastDigit;   i)
            for (int tri = 1; tri <= i;   tri)
                cout << "t" << tri;

        cout << endl;
    }

    // if odd digit - rect
    else if (lastDigit / 2 != 0)
    {
        for (int i = 1; i <= lastDigit; i  )
        {
            for (int rect = 1; rect <= i; rect  )
                cout << "t" << rect;

            cout << endl;
        }
        n = n/10;
    }

    cout << endl;

}while (lastDigit != 0);

n = n/10;
cout << endl;

return 0;
  

И, как я должен кодировать, когда вводится значение int, компилятор извлекает первую цифру (слева направо) и выводит ее соответствующим образом?

Любая помощь будет оценена!

Комментарии:

1. кстати, n == '0' сравнивается n с символом 0, который, в общем, не равен нулю (на самом деле, допускает ли C кодировку , где ‘0’ равно нулю? ).

2. Вы не должны использовать обычное деление, чтобы проверить, четна цифра или нет. Вместо этого используйте оператор по % модулю. Если вы немного подумаете, допустим, что последняя цифра — 8 тогда деление ее на 2 приведет к 4 , а не к нулю. Тогда вам также не нужно извлекать последнюю цифру, но вы можете использовать значение по модулю для полного числа. Вам также не нужно else if для этой проверки.

3. Пожалуйста, правильно отформатируйте свой код. Особенно углубления помогают нам понять, что вы делаете.

Ответ №1:

Ниже приведен полный код.

Шаг 1: Возьмите пользовательский ввод и проверьте, четный он или нечетный.

Шаг 2: Если это нечетно, тогда выполните triangle else rectangle.

 #include<iostream>
int main () {

int n;

cout<<"Enter number: ";
cin>>n;

if (n % 2 != 0)
{
    for(int i = 1; i <= n; i  )
    {
        cout<<endl;
        for(int j = 1; j <= n; j  )
        {
            cout<<j<<" ";
        }
    }
}
else
{
    for(int i = 1; i <= n; i  )
    {
        cout<<endl;
        for(int j = 1; j <= i; j  )
        {
            cout<<j<<" ";
        }
    }
}

return 0; 
}
  

Комментарии:

1. Привет, Саиф, когда я следовал вашему коду, я получил бесконечный цикл.

2. Казалось, что всякий раз, когда я менял его на %, я получаю бесконечный цикл, в котором числа просто выскакивали непрерывно.

3. нет необходимости изменять %, % используется для распознавания четных / нечетных чисел

4. просто скопируйте и вставьте, затем запустите его, чтобы ввести данные. Пример: n равно 5, вывод будет: 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5

5. после этой строки #include<iostream> напишите «используя пространство имен std».

Ответ №2:

Оба ваших отпечатка похожи. Я предлагаю:

 #include<iostream>

using namespace std;

int main () {

    int n;

    cout << "Enter number: ";
    cin >> n;

    int i = 1;
    intamp; rowLim = ((n % 2) ? n : i);

    for(i = 1; i <= n; i  )
    {
        cout << endl;
        for(int j = 1; j <= rowLim; j  )
        {
            cout<<j<<" ";
        }
    }

    return 0; 

}
  

Ответ №3:

Проще всего было бы использовать string , выполнить итерацию char по char и вывести соответствующий результат. Например

 #include <iostream>
using namespace std;

int main() {
    string s;
    cin >> s;
    for (char c : s) {
        int n = c - '0';
        bool k = n % 2;
        for (int i = 1; i <= n;   i) {
            for (int j = 1; j <= (k ? n : i);   j)
                cout << " " << j;
            cout << endl;
        }
        cout << endl;
    }
    return 0; 
}
  

Вывод

  1
 1 2

 1
 1 2
 1 2 3
 1 2 3 4

 1 2 3 4 5
 1 2 3 4 5
 1 2 3 4 5
 1 2 3 4 5
 1 2 3 4 5
  

Смотрите DEMO