Вывод фигур на экран (цикл for) - C (СИ)
Формулировка задачи:
Требуется с помощью фориков вывести следующие фигуры одним кодом. Первые две выводятся без проблем, при добавлении третьего забивает все звездами без перерыва. Может, кто-нибудь увидит ошибку в коде?
Требуемые фигуры:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, k=0, z=0, a, p=0;
for(i=1; i<=10; i++) {
k=0;
while(k!=i) {
k++;
printf("*");
}
printf("\n");
}
for(i=10;i>=1;i--) {
z=0;
while(z!=i) {
printf("*");
z=z+1;
}
printf("\n");
}
for(i=1; i<=10; i++) {
a=0;
while(a!=i) {
a++;
printf(" ");
}
while(p!=(10-i)) {
printf("*");
p=p+1;
}
printf("\n");
}
return 0;
}Решение задачи: «Вывод фигур на экран (цикл for)»
textual
Листинг программы
for(i=1; i<=10; i++)
{
p = 0;//тут нужно обнулять
/*while(a!=i)
{
a++;
printf(" ");
}*///думаю это можно вообще убрать, потому, что треугольник и без него строится хорошо
while(p!=(10-i))
{
printf("*");
p=p+1;
}
printf("\n");
}
Объяснение кода листинга программы
В этом коде используется цикл for для вывода на экран 10 различных треугольников.
- Установка начального значения переменной
iравным 1. - Установка начального значения переменной
pравным 0. - В каждой итерации цикла значение переменной
iувеличивается на 1. - Затем, внутри цикла while, значение переменной
pувеличивается на 1, пока оно не станет равным 10-i. - Значение переменной
aувеличивается на 1 в каждой итерации цикла while внутри условия if, но это не влияет на результат, поскольку треугольник строится правильно. - Значение переменной
pувеличивается на 1 в каждой итерации цикла while, пока оно не станет равным 10-i. - В каждой итерации цикла while выводится символ
*. - После завершения цикла while, выводится символ
\n, который переходит на новую строку. - После завершения цикла for, значение переменной
iувеличивается на 1 и процесс повторяется для следующего треугольника. Следовательно, код создает 10 различных треугольников, каждый из которых выводится на новую строку.