Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 23.05.2014, 12:26   #1 (permalink)
мистерикс
Новичок
 
Регистрация: 23.05.2014
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите с процедурами и функциями

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

Старый 23.05.2014, 12:26
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Пожалуйста, внимательно пролистайте данные посты

Программа с несколькими процедурами, Паскаль
Программа с несколькими процедурами, нисходящий способ
Программы с процедурами
Часы Sony SmartWatch 2 обзавелись новыми функциями

Старый 23.05.2014, 14:24   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от мистерикс Посмотреть сообщение
Нужно решить следущую задачку двумя вариантами: 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). За возможные глюки этой недоделки АВС не отвечаю.
По идее, должно работать.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 18:03.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.