Помощь - Поиск - Пользователи - Календарь
Полная версия: Даны Z,X и Y. Вычислить R=max(x+y,z,y+z), если x>y. В противном случае R=x+y+z
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
9milesz
Даны Z,X и Y. Вычислить R=max(x+y,z,y+z), если x>y. В противном случае R=x+y+z

не могу решить, прошу помощи
Федосеев Павел
А что уже имеется кроме ничего?
9milesz
Цитата(Федосеев Павел @ 22.12.2014 21:51) *

А что уже имеется кроме ничего?


В том то и дело, что ничего.. Пробовал писать, ничего не получилось и не работало
Федосеев Павел
Ну вот попытки и приводи.
9milesz
Цитата(Федосеев Павел @ 22.12.2014 22:45) *

Ну вот попытки и приводи.




var
z,x,y,r,max:real;
begin
writeln('Vvedite X');
readln(x);
writeln('Vvedite Y');
readln(y);
writeln('Vvedite Z');
readln(z);
if (x>y)
then
begin
if x+y>y+z and x+y>z then writeln('MAX=x+y',x+y);
if y+z>x+y and y+z>z then writeln('MAX=y+z',y+z);
if z>x+y and z>y+z then writeln('MAX=Z',z);
if x+y=y+z=z then writeln('MAX="="',z);
end.
else
r:=x+y+z;
writeln('R=',R);
end.



Я предполагаю, что здесь куча ошибок. Так же возможно, что я пошел вообще не тем путем. Задачу попросил сделать мой друг. Понятно, что надо бы ему самому разбираться, но что поделать, друг есть друг. Сам я паскаль не видел с 9 класса и вполне возможно, что "очевидные" для Вас вещи окажутся для меня вовсе не такими. Поэтому прошу, по мере возможности, подсказать максимально "понятнее", если так можно выразится.

Федосеев Павел
В общих чертах

1. Определи Функцию Max(a,b)
2. Если ... то R:=x+y+z, иначе R:=Max(Max(x+y,z), y+z)
3. writeln('R=',R);

И доводи программу до уровня компиляции - кто будет расставлято скобки в условиях?
9milesz
Цитата(Федосеев Павел @ 23.12.2014 6:43) *

В общих чертах

1. Определи Функцию Max(a,b)
2. Если ... то R:=x+y+z, иначе R:=Max(Max(x+y,z), y+z)
3. writeln('R=',R);

И доводи программу до уровня компиляции - кто будет расставлято скобки в условиях?





begin
if x+y>y+z and x+y>z then writeln('MAX=x+y',x+y);
if y+z>x+y and y+z>z then writeln('MAX=y+z',y+z);
if z>x+y and z>y+z then writeln('MAX=Z',z);
if x+y=y+z=z then writeln('MAX="="',z);
end.


Эта часть вообще не нужна? я правильно понял?
Федосеев Павел
Она делает тоже самое, но не очень наглядно и трудно проверить.
9milesz
 
var
z,x,y,r:real;
function max(x,y : real) : real;
begin
if (x > y) then max := x
else max := y;
end;
begin
writeln('Vvedite X');
readln(x);
writeln('Vvedite Y');
readln(y);
writeln('Vvedite Z');
readln(z);
if (x>y)
then
R:=max(max(x+y,z),y+z) else R:=x+y+z;
writeln('R=',R);
end.


Вот, вроде бы даже работает.
Федосеев Павел
Классно!!!

PS Обычно, как коммивояжёр, я ещё предлагаю "товар вдогонку" - форматтер исходного кода JCF - по этой и этой ссылкам. Очень удобно, да и преподавателю сдавать не стыдно (они обычно фыркают, если нет отступов).
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.