Задание первой недели CS50 с пирамидками в игре "Марио"
Начала выполнять задание первой недели курса CS50. Вполне ожидаемо появились проблемы :))) Прогнала фрагмент кода до do-while loop - всё работает. Но вот с оставшейся половиной видимо что-то не так.
Выдаёт 2 ошибки:
-
more '%' conversions than data arguments
-
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 шт):
В коде Вы добавили свою функцию 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);
}
}