Даны действительные числа 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; } |