PDA

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



sedeca
06.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
06.06.2008, 09:33
А чем не устраивает вариант, предложенный Dveloper-ом. А представленый код просчитайте вручную с небольшим числом, например 5 и увидите свои ошибки. Хочу добавить, что целочисленное деление на 2, это то же самое, что сдвиг вправо на 1 разряд. Обратите внимание на строку х=х/2-х%2, подставьте сюда 5 - как программа написана, так она и работает.

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

x=x/2;
};