Задачи на целые числа без использования цикла
Даны
действительные числа X, Y (Y ≠ X). Меньшее из этих двух чисел заменить их
полу суммой, а большее – их удвоенным произведением.
Задача
кажется очень простой, но в ней имеется очень интересный нюанс. Разберем лучше
на примере:
Пусть
число x
равно 4,
а
y равен 6. Тогда согласно условию
задачи x
должно стать равным (4+6)/2 = 5, а
y
должно стать равным 2*4*6 = 48.
Но
если мы в программе сделаем x равным 5, а затем будем
вычислять y,
то получим
y
= 2*x*y = 2*5*6=60 –
а должно было 48! Дело в том, что мы при вычислении y использовали
измененное значение x.
Поэтому
в программе мы предварительно вычисляем и запоминаем в вспомогательных
переменных a и b
значения полу суммы и удвоенного произведения чисел x
и y,
а уж затем присваиваем им новые значения.
Program A1_10;
var
a,b,x,y:real;
begin
readln(x,y);
a:=(x+y)/2;
b:=2*x*y;
if x<y then
begin x:=a; y:=b; end
else
begin x:=b; y:=a; end;
writeln(x:0:6,' ',y:0:6);
readln;
end.
|
//Program A1.10
#include
<iostream>
using
namespace std;
int main()
{ double x,y,a,b;
cin>>x>>y;
a=(x+y)/2;
b=2*x*y;
if(x<y) {x=a; y=b;}
else
{x=b; y=a;}
cout<<x<<"
"<<y<<endl;
return 0;
}
|
|