СИ++ помогите найти ошибку в программе

Ответить
sedeca
Сообщения: 2
Зарегистрирован: 05 июн 2008, 17:45

06 июн 2008, 06:58

задание-по введенному символу установить в каких позициях его двоичного кода записанны нули.

Программа:

#include "stdafx.h"
#include "stdio.h"
#include "conio.h"
#include <iostream>
int i=0;
int x=0;
void main() {
printf("Vvedite chislo\n");
scanf("%i",&x);//d\введение параметра Х с клавиатуры
while (x!=1)//цикл1:начало..пока Х делится на два, не равно нулю
{
for (i=0;i<32;i++)//цикл2:начало..с и равно нулю, до 100, с шагом 1
{
if(x%2==0)//если остаток от деления числа на два равен нулю, то
{
printf("In%i position - 0\n", i);
}//выводит на экран

x=x/2-x%2;
};
};//делит число дальше на два
//конец цикла2
getch();//нажатие любой клавиши
}//конец программы


прога тупит....
Albor
Сообщения: 482
Зарегистрирован: 06 сен 2004, 13:34
Откуда: Днепропетровск

06 июн 2008, 09:33

А чем не устраивает вариант, предложенный Dveloper-ом. А представленый код просчитайте вручную с небольшим числом, например 5 и увидите свои ошибки. Хочу добавить, что целочисленное деление на 2, это то же самое, что сдвиг вправо на 1 разряд. Обратите внимание на строку х=х/2-х%2, подставьте сюда 5 - как программа написана, так она и работает.
airyashov
Сообщения: 416
Зарегистрирован: 02 ноя 2007, 10:31

06 июн 2008, 10:13

printf("In%i position - 0\n", i);
}//выводит на экран

x=x/2;
};
Ответить