Ребят, помогите пожалуйста. "Составить программу для вычесления сторон прямоугольника если известны его периметр и площадь. (В ПАСКАЛЕ)" Заранее спасибо. с:

Ребят, помогите пожалуйста. "Составить программу для вычесления сторон прямоугольника если известны его периметр и площадь. (В ПАСКАЛЕ)" Заранее спасибо. с:
Гость
Ответ(ы) на вопрос:
Гость
Прежде чем писать программу, попробуем ее формализовать. Мы знаем, что периметр прямоугольника равен Р = 2*(a+b), а площадь равна S=a*б, где a и b - две стороны прямоугольника. Тогда b =S/a, а периметр P =2a +2b или 2a+2S/a. Отсюда a*P = 2a² +2S. Имеем квадратное уравнение: a²-a*P/2+S=0, решая которое относительно а (сторона прямоугольника) при известных коэффициентах P и S, получим значение сторон прямоугольника. В программе я не проверяю, что введены именно положительные периметр и площадь, надеясь на внимательность вводящего данные. Итак: program storona; uses crt;  { используем экран} var            b,P,S,d,x1,x2: real;  {наши переменные} begin   clrscr; {чистим экран}   write('Wwedite perimetr  P: ');   readln(P);   write('Wwedite ploshad S: ');   readln(S);   {Вычисляем дискриминант}   b:=-P/2;   d:= b*b - 4*S;   if d > 0 then  {Если дискриминант >0 - все хорошо} begin   x1:= (-b + sqrt(d))/2;   x2:= (-b - sqrt(d))/2;   writeln('Storona1 = ',x1:0:2); {ответ с двумя знаками после запятой}   writeln('Storona2 = ',x2:0:2); end; {Если дискриминант равен 0, то тоже неплохо: у нас квадрат}   if d = 0 then begin   x1:= -(b/2);   writeln('Storona1 = ',x1:0:2);   writeln('Storona2 = ',x1:0:2); end; {Если дискриминант меньше 0, плохо, выводим сообщение}   if d < 0 then begin   writeln('Ошибка в данных); end;   readln; end.
Не нашли ответ?
Ответить на вопрос
Похожие вопросы