Код в приложении.
Пояснения:
Посмотрим, как же нам решить задачу. Сначала, поймём как обнулить бит. Бит можно обнулить если использовать логическое И с нулём. Значит, нам нужно использовать логическое И на нужном бите. Как же это сделать? В С++ есть побитовые операции между двумя числами, но побитовое И (&) применяется между всеми битами двух чисел, т.е.
Заметим, что
Числа в С++ с фиксированной разрядностью, т.е. битов всегда определённое кол-во. Исходя из условий задачи, тут нужен int - 32-битный тип.
Тогда, чтобы обнулить нужный бит, нам нужно использовать побитовое И с таким числом, что все его биты, кроме нужного, равны 1.
Добиться этого мы сможем следующим образом. Сдвинем 1 влево на k бит и получим такое число, что все биты, кроме k-го равны 0, а k-ый равен 1, и используем побитовую инверсию (~), т.е. инвертируем каждый бит в числе.
Получив нужное число, выполняем побитовое И и обнуляем k-ый бит.
Как работают примеры:
И второй пример:
begin
writeln('Введите коэффициенты a,b,c:');
readln(a,b,c);
d:=(sqr(b))-(4*a*c);
if d>0 then begin
x1:=(-b+(sqrt(d)))/(2*a);
x2:=(-b-(sqrt(d)))/(2*a);
writeln('');
writeln('x1= ',x1);
writeln('x2= ',x2);
end;
if d=0 then begin
x1:=(-b/2*a);
writeln('x= ',x1);
end;
if d<0 then writeln('Корней нет!');
end.