Как добавить вывод для каждого ввода числа? - PullRequest
1 голос
/ 10 октября 2019

Мне поручено написать короткую программу, которая позволит вводить числа от 1 до 50, и из этого числа треугольник, составленный из звездочек, выведет столько историй. Например, при вводе 2 будет выведен * треугольник с одним * сверху и второй строкой из двух * снизу, а при вводе 3 будет выведен * треугольник с одним * сверху и второй строкойдва * в середине, затем третий ряд из трех * внизу и так далее. Я знаю способ сделать это, сделав вложенные if gate для каждого числа 1-50, но мне было интересно, есть ли более эффективный способ сделать это?

Я знаю способ сделать это, сделаввложенный if gate для каждого числа 1-50, но мне было интересно, есть ли более эффективный способ сделать это?

#include <stdio.h>
#include <stdlib.h>
int main(void) 
{
    //gather user input
int triNum;
char a;
scanf("%i", &triNum);
    //make sure input is <= 50
if(triNum <= 50)
{
    if(triNum == 1)
    {
        printf("*");
    }
    if (triNum == 2)
    {
        a = '*';
        printf("*\n");
        printf("*%c\n", a);
    }
}
    return 0;
}

При кодировании каждого отдельного числа нет фактического сообщения об ошибке, которое мне просто интересноболее эффективный способ сделать это?

1 Ответ

2 голосов
/ 10 октября 2019

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

#include <stdio.h>

int main(void)
{
    int h, i, j;

    printf("What is the height of the triangle? ");
    scanf("%d", &h);

    for (i = 0; i < h; ++i) {
        for (j = 0; j <= i; ++j)
            printf("*");
        printf("\n");
    }

    return 0;
}

Для данной высоты h эта программа зацикливается на h строк и в каждой строке выводит h символов звездочки. Например, для h, занимающего 1, 2, 3 и 5, вывод выглядит так, как показано ниже.

What is the height of the triangle? 1
*

What is the height of the triangle? 2
*
**

What is the height of the triangle? 3
*
**
***

What is the height of the triangle? 5
*
**
***
****
*****
...