Подскажите где логика - C (СИ)
Формулировка задачи:
1. Вопрос собственно такой, мне уже Anitsirh помог найти альтернативу, но всё-таки кто знает, подскажите, почему не получается ?
Откомпилировав, после ввода символа вместо квадрата, например звёздочками, пустое пространство. Якобы fill напечатал не символами квадрат, а \n (предположение). Замена %c на %s ничего не даст, выкидует из программы после ввода символа
Если же после ввода стороны квадрата жать не Enter, а Ctrr+d(в линуксе типа конец ввода, я так понимаю), тогда всё работает. Квадрат символами печатается.
Если в scanf делать сразу два ввода - работает !
Если поменять местами ввод квадрата на ввод символа - тоже работает.
Так в чём же собственно проблема ? Мой код никак нельзя заставить работать так как я хочу ?
#include <stdio.h> void print(int, char); int main() { int side; char fill; printf("Enter storonu kvadrata: \n"); scanf("%d", &side); printf("Enter simvol kvadrata: \n"); scanf("%c", &fill); print(side, fill); return 0; } void print(int side, char fill) { int i, j; for (i = 1; i <= side; i++) { for (j = 1; j <= side; j++) printf("%c", fill); printf("\n"); } }
printf("Enter simvol i storonu kvadrata: \n"); scanf("%c%d", &fill, &side);
printf("Enter simvol kvadrata: \n"); scanf("%c", &fill); printf("Enter storonu kvadrata: \n"); scanf("%d", &side);
Решение задачи: «Подскажите где логика»
textual
Листинг программы
#include <stdio.h> void print(int, char); int main() { int side; char fill; printf("Enter storonu kvadrata:\n"); scanf("%d", &side); printf("Enter simvol kvadrata:\n"); //тут заменили %c на %s только эта замена во всем файле scanf("%s", &fill); print(side, fill); return 0; } void print(int side, char fill) { int i, j; for (i = 1; i <= side; i++) { for (j = 1; j <= side; j++) printf("%c ", fill); printf("\n"); } }
Объяснение кода листинга программы
- В программе имеется два пробела для ввода данных.
- Первый пробел для ввода длины стороны квадрата.
- Второй пробел для ввода символа, которым будет заполнен квадрат.
- Данные сохраняются в двух переменных:
side
(длина стороны квадрата) иfill
(символ заполнения). - Вызывается функция
print
, которая принимает в качестве аргументов длину стороны и символ заполнения. - Внутри функции
print
используются два вложенных цикла для вывода символов заполнения на экран. - Внешний цикл выполняется от 1 до
side
, а внутренний - от 1 доside
. - На каждой итерации внутреннего цикла выводится символ заполнения с помощью
printf(
%c, fill)
. - После каждой итерации внутреннего цикла вызывается
printf(
\n)
, чтобы перейти на новую строку. - Функция
print
завершает работу после выполнения внутренних циклов. - Возвращаемое значение функции
print
не используется. - В функции
main
после вызова функцииprint
возвращается 0, что означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д