Возвращаемая строка вместо int - PullRequest
1 голос
/ 25 апреля 2019

Когда я распечатываю пирамиду, последняя строка пирамиды или основания выводит целое число, представляющее, сколько хешей, вместо строки хешей.

примерно так:

Высота: 3

#
##
3

, когда она должна быть:

Height 3:

#
##
###

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

Я пытался изменить класс на void вместо int, но это выдает ошибку, поскольку это противоречивые типы.Я думаю, мне следует распечатать пустую строку, но она не вписывается в мои границы.

#include <cs50.h>
#include <stdio.h>

int get_height(string prompt);

int main(void)
{

    int ask = get_height("Height: ");
    printf("%i\n", ask);

}

int get_height(string prompt) {

    int n;
    do {
        n = get_int("%s", prompt);
    }
    while (n < 1 || n > 8);
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < i; j++) {
            printf("#");
        }
        printf("\n");
    }
    return n; 
}

Ответы [ 2 ]

2 голосов
/ 25 апреля 2019

Последняя строка вывода - это высота, потому что это последняя вещь, напечатанная в вашей функции main:

printf("%i\n", ask);

get_height фактически напечатает только n-1 строк, потому что первая итерация (i = 0, j = 0) пропущено.

0 голосов
/ 25 апреля 2019

3 должно быть выведено

Проблема заключается в следующем:

for (int j = 0; j < i; j++) {

, который останавливается слишком рано.Предложить:

for (int j = i; j >=0; j--) {

Выходные данные после внесения вышеуказанного изменения:

#
##
###
3
...