Search code examples
creturnreturn-valuereturn-typecs50

Return string instead of int


When I print out a pyramid, the last line of the pyramid or the base prints out an integer which represents how many hashes, instead of a string of hashes.

like such:

Height: 3

#
##
3

when its supposed to be:

Height 3:

#
##
###

I'm supposed to print out a pyramid with a height based on the user's input, but instead of the base being printed out as a string it prints out an integer of how many hashes there should be for the base. I understand that this is because I'm returning n but I don't know how to go about it in a way where it still returns the loop.

I've tried changing the class to void instead of int, but that throws an error as it's conflicting types. I'm thinking I should print out an empty string but it messes with my bounds.

#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; 
}

Solution

  • The last line of output is the height because that is the last thing printed in your main function:

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

    get_height will actually only print n-1 lines because the first iteration (i=0,j=0) is skipped.