Задача На Tyrbo Pascal

anerita

New member
08.11.2012
0
0
#1
Даны три действительных числа. Выбрать из них те, которые принадлежат интервалу (1,3) и найти большее из чисел,которые принадлежат интервалу.
Вот кусочек программы:
Program work1;
uses crt;
var x,y,z: real;
begin
clrscr ;
writeln('введите число x');
readln(x);
writeln('введите число y');
readln(y);
writeln('введите число z');
readln(z);
if (x<=3) and (x>=1) then writeln ('x-принадлежит интервалу');
if (y<=3) and (y>=1) then writeln ('y- принадлежит интервалу');
if (z<=3) and (z>=1) then writeln ('z-принадлежит интервалу');
readln;
Подскажите пожалуйста, как найти наибольшее из чисел, которые входят в интервал?
 
W

Whatka

#2
например,можешь в своей прграммке ,если число не принадлежит интервалу,
делать его нулём
тогда после твоих 3 проверок тебе останется найти максимум из 3 чисел
 
R

rrrFer

#3
на паскале не писал лет 10 и вобще ниче не помню, но:
Код:
var x,y,z,max: real; 
//...
if (x<=3) and (x>=1) then begin max = x; writeln ('x-принадлежит интервалу'); end;
if (y<=3) and (y>=1) then begin if (y > max) then max = y; writeln ('y- принадлежит интервалу'); end;
if (z<=3) and (z>=1) then begin if (z > max) then max = z; writeln ('z-принадлежит интервалу'); end;
writeln('max: ', max);
Добавлено: но если ни одно из них не принадлежит интервалу - то либо в качестве Max выведется мусор, либо компилятор не даст собрать программу(предупреждение он выдать должен в любом случае), либо выдаст неверный ответ(если переменные в паскале инициализируются нулем при создании, например) или... вобщем ничего кооректного программа не скажет )
 

anerita

New member
08.11.2012
0
0
#4
на паскале не писал лет 10 и вобще ниче не помню, но:
Код:
var x,y,z,max: real; 
//...
if (x<=3) and (x>=1) then begin max = x; writeln ('x-принадлежит интервалу'); end;
if (y<=3) and (y>=1) then begin if (y > max) then max = y; writeln ('y- принадлежит интервалу'); end;
if (z<=3) and (z>=1) then begin if (z > max) then max = z; writeln ('z-принадлежит интервалу'); end;
writeln('max: ', max);
Добавлено: но если ни одно из них не принадлежит интервалу - то либо в качестве Max выведется мусор, либо компилятор не даст собрать программу(предупреждение он выдать должен в любом случае), либо выдаст неверный ответ(если переменные в паскале инициализируются нулем при создании, например) или... вобщем ничего кооректного программа не скажет )
скажите пожалуйста,блок-схема на эту программу так выглядит?
 

Вложения

R

rrrFer

#5
нет, не так.
Для начала расставь "да", "нет" над ветками блоков условий и попробуй сама разобраться что там нарисовала слева от "y<max", чтобы такой ерунды не было придерживайся ГОСТа. Стрелки ставятся только справа налево и снизу вверх, на всех остальных потоках управления они подразумеваются. У тебя все стрелки стоят снизу вверх, исправь.
не вижу блоков вывода ты же хочешь вывести результат)?
 

anerita

New member
08.11.2012
0
0
#6
нет, не так.
Для начала расставь "да", "нет" над ветками блоков условий и попробуй сама разобраться что там нарисовала слева от "y<max", чтобы такой ерунды не было придерживайся ГОСТа. Стрелки ставятся только справа налево и снизу вверх, на всех остальных потоках управления они подразумеваются. У тебя все стрелки стоят снизу вверх, исправь.
не вижу блоков вывода ты же хочешь вывести результат)?
Спасибо!все поняла,все исправлю))
 

anerita

New member
08.11.2012
0
0
#8
Извините, можете помочь с блок-схемой к этой задачи .
Задача такая:Разбейте заданное число на 3 слагаемых всеми различными способами.Разбиение отличающиеся лишь порядком слагаемых ,разными не считать.
program w1;
uses crt;
var
a,b,c,n:integer;
begin
writeln('vvedite chislo');
readln(n);
for a:=1 to n-2 do begin
for b:=1 to n-2 do begin
for c:=1 to n-2 do begin
if a+b+c=n then begin
writeln(n,'=',a,'+',b,'+',c);
end;
end;
end;
end;
readln;
end.
 

anerita

New member
08.11.2012
0
0
#10
не получается построить блок-схему к данной задаче:
Program w1;
uses crt;
var i,j,k,n:integer;
begin
clrscr;
write('введите число');
readln(n);
for i:=1 to n-2 do
for j:=i to n-i-1 do
for k:=j to n-i-j do
if i+j+k=n then writeln(n ,’=’,i,'+',j,'+',k);
readln
end.
Никак не разберусь с циклами.
 
R

rrrFer

#13
вроде бы верно. Надо добавить "да"/"нет" возле блока условия и в третьем цикле на первой итерации k = j, а не 1, аналогично, j = i, а не 1.
 

anerita

New member
08.11.2012
0
0
#14
да,точно.просто не правильно переписала. спасибо за помощь!)