Предмет: Информатика, автор: альстофер

Помогите, пожалуйста! Очень вас прошу! Через паскаль! num, res
Написать программу, которая в последовательности натуральных чисел определяет наибольшее, квадрат, которого не превосходит число 225.
Программа получает на вход натуральные числа, количество введенных чисел неизвестно, последовательность чисел заканчивается числом 0 (0 – признак окончания ввода и не входит в последовательность).
Программа должна вывести одно число: наибольшее число в последовательности, квадрат которого не превышает число 225.
Не использовать: const, count и другие


manamahkrit: Пастулат обозначений, всё! - кроме num и res, остальные запрещённо использовать. Непростительные заклятья)
Аноним: Смертельные противники goto, напишите приведенную ниже программу без goto и посмотрите, станет ли она от этого короче, понятнее, "правильнее" и т.д.
Аноним: var i,j,k,n:integer;
label M;
begin
n:=0;
for i:=1 to 1000 do
for j:=1 to 1000 do
for k:=1 to 1000 do
if i*j*k=84 then goto M else n:=n+1;
Writeln('Не нашли');
M:
Writeln(n)
end.
альстофер: а, спасибо, а что значит label?
Аноним: Это не Ваше задание решено, это пример с goto! Не вздумайте его списать в качестве ответа
Аноним: Ну и главное. Вы написали в вопросе "Не использовать: const, count и другие " - а что же конкретно МОЖНО использовать?
альстофер: нет,я просто ради примера, label что это?
Аноним: Вы уже третий раз спрашиваете. Есть учебники, книги по паскалю, поисковики в Интернет. За это время набрать label pascal в поисковике двадцать раз можно было
Crazzyone: label [имя метки] это метка, т.е. место в программе, куда можно вернуться в любой момент перейдя по ссылке goto [имя метки]
Crazzyone: не просто так спрашивал проходили ли метки

Ответы

Автор ответа: Crazzyone
0

program zadanie;
var
max,num,a :byte;
label metka;
begin
max:=0;
writeln('vvodite chisla');
metka:
readln(a);
if a=0 then
writeln ('max=',max)
else
    if a*a>225 then
       begin
            writeln('Slishkom bolshoe chislo');
            goto metka;
       end
    else
        begin
             if max<a then max:=a;
             goto metka;
        end;
readln;
end.



Crazzyone: переменную num убери, забыл удалить
альстофер: Ага! Ну, вот, то, что мне было нужно! Спасибо, огромное!
Crazzyone: welcome!
альстофер: а что такое goto metka?
альстофер: и label metka?
Аноним: ))))) goto, значит, проходили? или проходили и мимо прошли?
альстофер: да, нет я имел ввиду что значит label
Crazzyone: label [имя метки] это метка, т.е. место в программе, куда можно вернуться в любой момент перейдя по ссылке goto [имя метки] не просто так спрашивал проходили ли метки
Crazzyone: странно, что не смутило metka:
Автор ответа: Аноним
0
Если квадрат натурального числа не превосходит 225, то само это число не может превосходить √225 = 15.
Алгоритм
Заносим в переменную res (результат) число 0. Оно заведомо меньше любого из натуральных чисел в последовательности.
Читаем очередное число в последовательности. Если оно больше res и при этом не превышает 15, записываем его в res. Если оно равно нулю, чтение прекращаем и выводим значение res.

var
  res,num:integer;
begin
  res:=0;
  repeat
    Read(num);
    if (num>res) and (num<=15) then res:=num
  until num=0;
  Writeln(res)
end.
Похожие вопросы
Предмет: Українська література, автор: vdovicenkoanastasia8