Задание первой недели CS50 с пирамидками в игре "Марио"

Начала выполнять задание первой недели курса CS50. Вполне ожидаемо появились проблемы :))) Прогнала фрагмент кода до do-while loop - всё работает. Но вот с оставшейся половиной видимо что-то не так.

Выдаёт 2 ошибки:

  1. more '%' conversions than data arguments

  2. expected identifier or '('.

Буду безумно рада, если кто-нибудь поможет разобраться!

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

void print(char c, int n);

int main()
{
    int n; 
    do
    {
        n = get_int("Height: ");
    } while (n < 1 || n > 8);

    for (int i = 0; i < n; i++)
    {
        printf(' ', n-1-i);
        printf('#', i+1);
        printf(' ', 2);
        printf('#', i+1);

        print('\n',1);
    
    }
}

void print(char c, int n)
{
    for(int i=0; i<n; i++)
    {
        printf("%c", c);
    }
}

Ответы (1 шт):

Автор решения: KoVadim

В коде Вы добавили свою функцию void printf(char c, int n);, функция с подобным названием уже есть. Это во первых. Замените ее имя на что то другое. Например, просто print.

Дальше, Ваша функция printf принимает первый параметр char, а Вы ей подсовываете строку. Упс.

То, что в двойных кавычках - это си строка (массив символов). Что в одинарных - символ (char). Если в двойных кавычках один символ, это все равно строка (там ещё есть нулевой символ.

Поэтому, вместо

printf(" ", n-1-i);

надо писать

printf(' ', n-1-i);

А в конце вообще вызываете с одним параметром. Скорее всего там нужно 1 передать вторым параметром.

printf('\n',1); // очевидно, здесь будет Ваше новое имя

и после этого все вдруг начинает работать магическим образом.

Вот мой вариант, что бы не было разногласий

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

void print(char c, int n);

int main()
{
    int n; 
    do
    {
        n = get_int("Height: ");
    } while (n < 1 || n > 8);

    for (int i = 0; i < n; i++)
    {
        print(' ', n-1-i);
        print('#', i+1);
        print(' ', 2);
        print('#', i+1);

        print('\n',1);
    
    }
}

void print(char c, int n)
{
    for(int i=0; i<n; i++)
    {
        printf("%c", c);
    }
}
→ Ссылка