Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.09.2012, 22:14   #1
fatalist30000
 
Регистрация: 22.09.2012
Сообщений: 4
По умолчанию реализовать в виде модуля

реализовать в виде модуля набор следующих операций с целыми числами.
1. Процедура проверки есть ли в записи n-значного числа три одинаковых цифры;
2.Найти наибольшую и наименьшую цифру в записи данного натурального числа;
3.Дано натуральное число N. Найти и вывести все числа в интервале от 1 до N, у которых сумма все
цифр совпадает данного числа. Если таких чисел нет, то вывести слово "нет". Пример N=44, числа 17,26,35.
Разработать программу, использующую подпрограммы данного модуля.
fatalist30000 вне форума Ответить с цитированием
Старый 22.09.2012, 22:17   #2
Leshii
Форумчанин
 
Регистрация: 26.07.2011
Сообщений: 376
По умолчанию

Что "Реализовал"? Вспоминаем операции div и mod, туда же еще циклы for и while.
Люблю на ты.Я человек простой
Leshii вне форума Ответить с цитированием
Старый 22.09.2012, 22:34   #3
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

1.
Код:
var 
i, j, k :integer;
...
k:=0;
for i:=1 to Length(N) do // N - натуральное число
  for j:=i+1 to Length(N) do 
  begin
    if N[i]=N[j] then k:=k+1;
    if k>=3 then <сообщение что число повторилось 3 или более раза>;
  end;
2.
Код:
var
minN, maxN :integer;
...
minN:=0;
maxN:=0;
for i:=1 to Lenth(N) do // N - натуральное число
  if N[i]>maxN
    then maxN:=N[i]
    else if N[i]<minN
            then minN:=N[i];
3. не понял(
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 23.09.2012, 09:17   #4
fatalist30000
 
Регистрация: 22.09.2012
Сообщений: 4
По умолчанию

можешь сделать модуль в пакале с этими процедурами
fatalist30000 вне форума Ответить с цитированием
Старый 23.09.2012, 10:43   #5
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
можешь сделать модуль в пакале с этими процедурами
ну в конец обленились... Модуль в паскале - это четыре слова: Unit, Interface, Implementation,End. Самое главное - основу модуля, процедуры - Вам уже дали.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 23.09.2012, 11:06   #6
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Нда, "модуль в пакале"...
Чисто из любви к искусству пишу - вот примерно так можно сделать пункт 3.
Код:
function DecDigSum(n: word): word;
begin
  if n=0 then DecDigSum:= 0
  else DecDigSum:= n mod 10 + DecDigSum(n div 10)
end;

procedure PrintSameDigSumNumbers(n: word);
var
  s,i: word;
begin
  s:= DecDigSum(n);
  for i:=1 to n-1 do
    if DecDigSum(i)=s then writeln(i)
end;
Кроме прочего, я бы все же постарался не прибегать к символьной записи там, где это не необходимо. Я согласен, что строки вообще-то дают более широкий диапазон "чисел" (взял в кавычки, потому что это не совсем числа). Но если диапазон не оговорен, будем считать что он нормальный integer (или LongInt). Так что, например, решение п.2 я бы сделал так..
Код:
function Min(a,b: word): word;
begin
  if a<b then Min:= a else Min:= b
end;

function Max(a,b: word): word;
begin
  if a<b then Max:= b else Max:= a
end;

function MinDig(n: word): word;
begin
  if n<10 then
    MinDig:= n
  else
    MinDig:= Min(n mod 10, MinDig(n div 10))
end;

function MaxDig(n: word): word;
begin
  if n<10 then
    MaxDig:= n
  else
    MaxDig:= Max(n mod 10, MaxDig(n div 10))
end;
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 24.09.2012, 16:31   #7
fatalist30000
 
Регистрация: 22.09.2012
Сообщений: 4
По умолчанию

а как эти процедуры в модуль засунуть?
fatalist30000 вне форума Ответить с цитированием
Старый 25.09.2012, 05:45   #8
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от fatalist30000 Посмотреть сообщение
а как эти процедуры в модуль засунуть?
Фаталист, а ты в учебник или справку не можешь заглянуть?
Я приведу пример с небольшими пояснениями, так и быть..
Код:
unit IntegerCollection;
// unit name MUST be the same as file name!
// here, the file MUST be IntegerCollection.pas

interface
// in this section, DECLARE variables, functions & procedures to be seen from outside

function DecimalDigitsSum(n: word): word;
procedure PrintNumbersOfSameDigitsSum(n: word);
function Min(a,b: word): word;
function Max(a,b: word): word;
function MinDigit(n: word): word;
function MaxDigit(n: word): word;

implementation
// below, implement the declared functions & procedures

function DecimalDigitsSum(n: word): word;
begin
  if n=0 then DecimalDigitsSum:= 0
  else DecimalDigitsSum:= n mod 10 + DecimalDigitsSum(n div 10)
end;

procedure PrintNumbersOfSameDigitsSum(n: word);
var
  s,i: word;
begin
  s:= DecimalDigitsSum(n);
  for i:=1 to n-1 do
    if DecimalDigitsSum(i)=s then writeln(i)
end;

function Min(a,b: word): word;
begin
  if a<b then Min:= a else Min:= b
end;

function Max(a,b: word): word;
begin
  if a<b then Max:= b else Max:= a
end;

function MinDigit(n: word): word;
begin
  if n<10 then
    MinDigit:= n
  else
    MinDigit:= Min(n mod 10, MinDigit(n div 10))
end;

function MaxDigit(n: word): word;
begin
  if n<10 then
    MaxDigit:= n
  else
    MaxDigit:= Max(n mod 10, MaxDigit(n div 10))
end;

end.
Yurk@, как-то странно ты трактуешь наличие трех одинаковых цифр.. Мне мой здравый смысл подсказывает совсем другое.
Код:
function SameDigits(n,q: word): boolean;
// returns TRUE if there are at least q same digits in n
var
  c: array[0..9] of byte;
begin
  SameDigits:= q<=1;
  if n>9 then begin
    FillChar(c,SizeOf(c),0);
    while n>0 do begin
      inc(c[n mod 10]);
      if c[n mod 10]>=q then begin
        SameDigits:= true;
        exit
      end;
      n:= n div 10
    end
  end
end;
Код писал тут, не проверял.
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализовать в виде модуля набор набор подпрограмм для следующих операций со строками : 1) Процедура подсчёта кол-ва букв к в пер Richik123 Паскаль, Turbo Pascal, PascalABC.NET 12 23.09.2012 12:24
Реализовать в виде модуля набор подпрограмм для выполнения следующих операций с массивом размерности nxm: Лыжник Помощь студентам 1 13.09.2012 14:46
Очень-очень надо!Завтра сдавать уже=( Реализовать в виде модуля набор подпрограмм...(Pascal) Dizzy Помощь студентам 4 17.12.2010 17:10
Реализовать в виде модуля Assya Помощь студентам 10 16.12.2010 19:01
Реализовать в виде модуля набор подпрогамм для выполнения следующих операций квадратными матрицами Nomid Общие вопросы C/C++ 3 11.12.2010 15:48