Отображение перевернутой пирамиды звездочек - PullRequest
0 голосов
/ 31 марта 2010

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

#include <stdio.h>
#include <conio.h>
void printchars(int no_star, char space);
int getNo_of_rows(void);
int main(void)
{
    int numrows, rownum;
    rownum=0;
    numrows=getNo_of_rows();
    for(rownum=0;rownum<=numrows;rownum++)
    {
        printchars(numrows-rownum, ' ');
        printchars((2*rownum-1), '*');
        printf("\n");
    }
    _getche();
    return 0;
}

void printchars(int no_star, char space)
{
    int cnt;
    for(cnt=0;cnt<no_star;cnt++)
    {
        printf("%c",space);
    }
}

int getNo_of_rows(void)
{
    int no_star;
    printf("\n Please enter the number of stars you want to print\n");

    scanf("%d",&no_star);
    while(no_star<1)
    {
        printf("\n number incorrect, please enter correct number");
        scanf("%d",&no_star);

    }
    return no_star;
}

Ответы [ 2 ]

4 голосов
/ 31 марта 2010

Ваши строки отображаются в порядке, обратном тому, как вы хотите, верно? Итак, что вы хотите сделать, это посмотреть на код, который печатает строки:

 for(rownum=0;rownum<=numrows;rownum++)
 {
  printchars(numrows-rownum, ' ');
  printchars((2*rownum-1), '*');
  printf("\n");
 }

и выяснить, как заставить его бежать назад. Приведенный выше код вызывает printchars для строк со 2*rownum-1 звездочками до 2*numrows-1 звездочек, поскольку rownum начинается с 0 и считается до numrows.

Как вы могли бы изменить это, чтобы заставить rownum начинать с numrows и вместо этого вести обратный отсчет?

2 голосов
/ 31 марта 2010

Попробуйте просмотреть код вручную, шаг за шагом.

Получите немного миллиметровки.

Скажите, что вы вводите 5. Просто, исходя из того, что в вашем списке (без исполнения), что говорит, что он выведет на экран? Нарисуйте его на миллиметровке.

Посмотрите, сможете ли вы обнаружить ошибку.

Пара нежелательных предложений:

  • Использование numrows для вашего ввода и rownum для вашего индекса сбивает с толку (и это источник вашей ошибки). Подумайте над тем, чтобы сделать вашу переменную индекса более отличной от вашего ввода (возможно, rn).
  • Подумайте о том, чтобы соответствовать вашим аббревиатурам. Вы используете no_, No_of_ и num как сокращение от «число».
...