Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите с программириванием. Пожалуйста, срочно!!!

Ксения Пилюшина Знаток (448), закрыт 13 лет назад
1) Требовалось написать программу, которая решает уравнение « a|x|=b » относительно x для любых чисел a и b , введенных с клавиатуры. Все числа считаются действительными. Программист торопился и написал программу неправильно:
var a,b,x: real;
begin
readln(a,b,x);
if a = 0 then
if b = 0 then
write ('любое число')
else write ('нет решений')
else
if b = 0 then
write('x = 0')
else write('x =',b/a,' или x =',-b/a);
end.
Последовательно выполните три задания:
1.Приведите пример таких чисел a, b, x, при которых программа неверно решает поставленную задачу.
2.Укажите, какая часть программы является лишней.
3.Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы).
Лучший ответ
Дмитрий Неизвестный Гуру (4651) 14 лет назад
1) Неверное решение, когда a и b разных знаков. Ведь x под модулем, а значит знак b должен быть как и знак числа a.
2) Лишним является запрос от пользователя переменной x в строке readln(a,b,x). Достаточно запросить a и b.
3)
var a,b,x: real;
begin
readln(a,b);
if a = 0 then
if b = 0 then write ('любое число')
else write ('нет решений')
else begin
if b = 0 then write('x = 0');
if ((a<0) and (b>0)) or ((a>0) and (b<0)) then write('нет решений')
else write('x =',b/a,' или x =',-b/a);
end;
end.
Остальные ответы
vinnitu Мыслитель (5701) 14 лет назад
if b = 0 then
write ('любое число')
else write ('нет решений')
else
if b = 0 then <------------------------какой смысл проверять b на равенство 0, если такая проверка уже была выше? этот код не выполнится
Саня Семенов Оракул (60436) 14 лет назад
элсы с ифами криво стоят надо их бегинами выравнивать ...
ИшпанеЦ Профи (597) 14 лет назад
пишите так:
var a,b:real;
begin
write('Введите A: ');
Readln(a);
write('Введите B: ');
Readln(b);
If (b=0)and(a=0)
then
writeln('X - любое число')
else
if a=0
then
writeln('нет решений')
else
if b=0
then
writeln('x = 0')
else
writeln('x = ',b/a);
readkey;
end.

программисты блин, а то что линейное уравнение имеет только один корень вас не учили?
Дьявол во плоти Мастер (1226) 14 лет назад
Вроде все правильно.
Может прокатит, иди сдавай.
дилшод Ученик (129) 14 лет назад
обрати внимание на последную строку там должен быть
writeln('x = ',b/a);
writeln('x = ',-b/a);

пишите так:
var a,b:real;
begin
write('Введите A: ');
Readln(a);
write('Введите B: ');
Readln(b);
If (b=0)and(a=0)
then
writeln('X - любое число')
else
if a=0
then
writeln('нет решений')
else
if b=0
then
writeln('x = 0')
else
begin
writeln('x = ',b/a);
writeln('x = ',-b/a);
end;
readkey;
end.
nnn7 Просветленный (20152) 14 лет назад
товарищи) ) а кто модуль будет ставить? решения верные только что-то не вижу модуля, а в исходном примере есть)))
Похожие вопросы