Не работает вычитание в цикле - C (СИ)
Формулировка задачи:
Вот программа должна (пока) отнимать от Х У, но делает только раз, хотя условие стоит "while (zal<y);"
в чем проблема?
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void main (void)
{
int x,y,zal, ost, z_i=0;
clrscr ();
printf ("x=");
scanf("%d", &x);
printf ("y=");
scanf("%d", &y);
if (x==y)
{
printf ("Ost-0,zal-0");
}
while (zal<y);
{
zal=x-y;
z_i++;
}
printf ("\n%d", zal);
getch ();
}//mainРешение задачи: «Не работает вычитание в цикле»
textual
Листинг программы
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void main (void)
{
int x,y,zal, ost, i, z_i=0;
clrscr ();
printf ("x=");
scanf("%d", &x);
printf ("y=");
scanf("%d", &y);
if (x==y)
{
printf ("Ost-0,zal-0");
}
while (x>0)
x-=y;
ost=x+y;
zal=ost;
printf ("\n Ost - %d", ost);
printf ("\n Zal - ,");
for(i=0; i<8; i++)
{
zal*=10;
z_i=0;
while(zal>=y)
{
zal-=y;
z_i++;
}
printf ("%d", z_i);
if(zal==0)
break;
}
getch ();
}
Объяснение кода листинга программы
- В начале программы объявляются переменные: x, y, zal, ost, i, z_i=0.
- С помощью функции scanf вводятся значения для переменных x и y.
- С помощью условного оператора if проверяется равенство x и y, и если это так, то выводится сообщение
Ost-0,zal-0. - Далее начинается цикл while, который выполняется до тех пор, пока x больше нуля. В каждой итерации цикла значение x уменьшается на значение y.
- После выхода из цикла while, значение x присваивается переменной ost, а значение ost присваивается переменной zal.
- Выводится значение ost с помощью функции printf.
- Далее начинается цикл for, который выполняется 8 раз.
- Внутри цикла for значение zal умножается на 10.
- Также внутри цикла for начинается другой цикл while, который выполняется до тех пор, пока значение zal больше или равно y.
- В каждой итерации цикла while значение zal уменьшается на y, а значение z_i увеличивается на 1.
- После выхода из цикла while, значение z_i выводится с помощью функции printf.
- Если значение zal равно нулю, то цикл for прерывается с помощью оператора break.
- В конце программы вызывается функция getch, которая ожидает нажатия клавиши.