• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Задача На Tyrbo Pascal

  • Автор темы anerita
  • Дата начала
A

anerita

Даны три действительных числа. Выбрать из них те, которые принадлежат интервалу (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

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

rrrFer

на паскале не писал лет 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 выведется мусор, либо компилятор не даст собрать программу(предупреждение он выдать должен в любом случае), либо выдаст неверный ответ(если переменные в паскале инициализируются нулем при создании, например) или... вобщем ничего кооректного программа не скажет )
 
A

anerita

на паскале не писал лет 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 выведется мусор, либо компилятор не даст собрать программу(предупреждение он выдать должен в любом случае), либо выдаст неверный ответ(если переменные в паскале инициализируются нулем при создании, например) или... вобщем ничего кооректного программа не скажет )
скажите пожалуйста,блок-схема на эту программу так выглядит?
 

Вложения

  • 2012_11_09_15.49.06.jpg
    2012_11_09_15.49.06.jpg
    243,6 КБ · Просмотры: 709
R

rrrFer

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

anerita

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

anerita

Извините, можете помочь с блок-схемой к этой задачи .
Задача такая:Разбейте заданное число на 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.
 
A

anerita

не получается построить блок-схему к данной задаче:
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

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

anerita

да,точно.просто не правильно переписала. спасибо за помощь!)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!