• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Паскаль, помощь в доработке программ

  • Автор темы Автор темы shrek=)
  • Дата начала Дата начала

shrek=)

Студент БГПУ
Почётный участник
Регистрация
6 Фев 2010
Сообщения
420
Реакции
6
Баллы
0
Паскаль, помощь в доработке программ

Для каждого элемента массива, состоящего из натуральных чисел, указать четыре неотрицательных
чмсла, сумма квадратов которых дает это число. Использовать процедуру поиска таких чисел.

Нужно оставить элементы в единственном виде.
Код:
uses crt;
var
mas:array [1..10] of integer;
i,l,k,x,y:integer;
procedure poisk;
begin
for k:=1 to 10 do begin
for l:=1 to 10 do
for x:=1 to 10 do
for y:=1 to 10 do
if mas[i]=sqr(k)+sqr(l)+sqr(x)+sqr(y) then
writeln (mas[i],'  =  ',[COLOR=Red]k,'  ',l,'  ',x,'  ',y[/COLOR]);
end;
end;
begin
randomize;
for i:=1 to 10 do begin
mas[i]:=random(40);
write(mas[i]:3);
end;
writeln;
for i:=1 to 10 do
poisk;
readln
end.
 
В результате работы программы, которую я представил, в ответ выдается разложения элементов одними и теми же числами, но в разной последовательности. А мне нужно только четыре числа, а не разложение каждого элемента.
 
В результате работы программы, которую я представил, в ответ выдается разложения элементов одними и теми же числами, но в разной последовательности. А мне нужно только четыре числа, а не разложение каждого элемента.
А, понятно.
Ну вроде так:
Код:
var
 mas:array [1..10] of integer;
 i,l,k,x,y:integer;

procedure poisk;
begin
 for k:=10 downto 1 do
  for l:=k downto 1 do
   for x:=l downto 1 do
    for y:=x downto 1 do
     if mas[i]=sqr(k)+sqr(l)+sqr(x)+sqr(y) then
      writeln (mas[i],'  =>  ',k,'  ',l,'  ',x,'  ',y);
end;

begin
 randomize;
 for i:=1 to 10 do
  begin
   mas[i]:=random(40);
   write(mas[i]:3);
  end;
 writeln;
 for i:=1 to 10 do poisk;
 readln
end.
 
Назад
Сверху