Не работает вычитание в цикле - 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 ();
}

Объяснение кода листинга программы

  1. В начале программы объявляются переменные: x, y, zal, ost, i, z_i=0.
  2. С помощью функции scanf вводятся значения для переменных x и y.
  3. С помощью условного оператора if проверяется равенство x и y, и если это так, то выводится сообщение Ost-0,zal-0.
  4. Далее начинается цикл while, который выполняется до тех пор, пока x больше нуля. В каждой итерации цикла значение x уменьшается на значение y.
  5. После выхода из цикла while, значение x присваивается переменной ost, а значение ost присваивается переменной zal.
  6. Выводится значение ost с помощью функции printf.
  7. Далее начинается цикл for, который выполняется 8 раз.
  8. Внутри цикла for значение zal умножается на 10.
  9. Также внутри цикла for начинается другой цикл while, который выполняется до тех пор, пока значение zal больше или равно y.
  10. В каждой итерации цикла while значение zal уменьшается на y, а значение z_i увеличивается на 1.
  11. После выхода из цикла while, значение z_i выводится с помощью функции printf.
  12. Если значение zal равно нулю, то цикл for прерывается с помощью оператора break.
  13. В конце программы вызывается функция getch, которая ожидает нажатия клавиши.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5