Mario CS-50 Dots - PullRequest
       6

Mario CS-50 Dots

0 голосов
/ 20 апреля 2020
#include <cs50.h>
#include <stdio.h>
int main(void)
{
    int height; // Declare height
    do
    {
        height = get_int("Height: "); //Ask user for height
    }
    while (height < 1 || height > 8); // This makes condition false so loop is not run any more and we can move on.

    for (int lines = 0; lines < height; lines++) //Correct
    {
        for (int hashes = -1; hashes < lines; hashes++) //Seems correct
        {
            for (int dots = lines - hashes; dots < 0; dots--) // Seems to do nothing....
            {
                  printf("."); //Prints "."
            }
            printf("#"); // Prints "# "
        }
        printf("\n"); // Prints New line
    }
}

Как есть, это просто печатает неверно обращенную пирамиду без точек. Я пробежал несколько строк, которые содержат точки, но каждый раз они были между «#». Я чувствую, что число точек + хэшей должно равняться количеству строк, но я не знаю, как бы я go получил это в строке "для".

1 Ответ

0 голосов
/ 28 апреля 2020

Это то, что вы ищете?

#include <stdio.h>
#include <string.h>

int main(void)
{
    int n = 4;
    char blocks[n];
    char dots[n];
    memset(blocks,'#',n);
    memset(dots,  '.',n);

    for(int i=0; i<n; ++i)
    {
        printf("%.*s%.*s%.2s%.*s%.*s\n", n-i-1, dots,
                                         i+1,   blocks,
                                                dots,
                                         i+1,   blocks,
                                         n-i-1, dots);
    }
    return 0;
}

Вывод

Success #stdin #stdout 0s 4388KB
...#..#...
..##..##..
.###..###.
####..####
...