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

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

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

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

Помогите с процедурами и функциями

мистерикс

Ученик
Регистрация
23 Май 2014
Сообщения
2
Реакции
0
Баллы
0
Помогите с процедурами и функциями

Нужно решить следущую задачку двумя вариантами: 1) с помощью процедур.
2) с помощью функций
Задачка нужна в abcpascal`е. Всем заранее спасибо!
Дано n целых чисел. Найти среди них число , у которого сумма цифр имеет максимальное значение.
 
Нужно решить следущую задачку двумя вариантами: 1) с помощью процедур.
2) с помощью функций
Задачка нужна в abcpascal`е. Всем заранее спасибо!
Дано n целых чисел. Найти среди них число , у которого сумма цифр имеет максимальное значение.
Легко.
Код:
Const
 N=40;

Var
 A:Array[1..N] of Integer;
 i,MaxSum,Sum,Imax:Integer;

Procedure Sum_of_Digits(Q:Integer; var Sm:Integer);
var
 m,S,P:integer;
begin
 P:=Q;
 S:=0;
 repeat
  m:=P mod 10;
  Inc(S,m);
  P:=P div 10;
 until P=0;
 Sm:=S;
end;

Begin
 Randomize;
 for i:=1 to N do
  begin
   A[i]:=Random(30000);
   write(A[i]:8);
  end;
 writeln;
 writeln;
 MaxSum:=0;
 for i:=1 to N do
  begin
   Sum_of_Digits(A[i],Sum);
   if Sum>MaxSum then
    begin
     Imax:=i;
     MaxSum:=Sum;
    end;
  end;
 Writeln('Maximal sum (',MaxSum,') has the element N',Imax,' equal to ',A[Imax]);
 Readln
End.
Код:
Const
 N=40;

Var
 A:Array[1..N] of Integer;
 i,MaxSum,Imax:Integer;

Function Sum(Q:Integer):Integer;
var
 m,S,P:integer;
begin
 P:=Q;
 S:=0;
 repeat
  m:=P mod 10;
  Inc(S,m);
  P:=P div 10;
 until P=0;
 Sum:=S;
end;

Begin
 Randomize;
 for i:=1 to N do
  begin
   A[i]:=Random(30000);
   write(A[i]:8);
  end;
 writeln;
 writeln;
 MaxSum:=0;
 for i:=1 to N do
  if Sum(A[i])>MaxSum then
   begin
    Imax:=i;
    MaxSum:=Sum(A[i]);
   end;
 Writeln('Maximal sum (',MaxSum,') has the element N',Imax,' equal to ',A[Imax]);
 Readln
End.

Задачка нужна в abcpascal`е.
Извините - всякой дряни не держу. Это для Turbo (Free). За возможные глюки этой недоделки АВС не отвечаю.
По идее, должно работать.
 
Назад
Сверху