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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.10.2015, 12:00   #1
Den_Dodge
Пользователь
 
Регистрация: 11.09.2015
Сообщений: 21
По умолчанию написать программу, которая выводит дату рождения пользователя(месяц и день) и выдает по ней ближайший "счастливый" год

Необходимо написать программу, которая выводит дату рождения пользователя(месяц и день) и выдает по ней ближайший "счастливый" год. "Счастливым" считается тот год, остаток от деления суммы цифр которого на 10 совпадает с аналогичным остатком для дня рождения или месяца.

Есть небольшие наработки, но к сожалению не могу "додумать" до конца.
Код:
var
  dd, mm, sum1, sum2, sum11, sum21, tg, tg1, tgsum, tgsum01:Integer;
begin
 writeln('Welcome!');
 writeln;
 writeln;
 sum11:=0;
 sum21:=0;

  write('Enter a birthday: '); // ввести день рождения
  Readln(dd);
  while (dd>31) or (dd<1) do
  begin
    Write('Incorrect format.Enter a birthday: ');
    Readln(dd);
  end;
  Write('Enter month of birth: '); // ввести месяц рождения
  Readln(mm);
  while (mm>12) or (mm<1) do
  begin
    Write('Incorrect format.Enter month of birth: ');
    Readln(mm);
  end;

  Writeln('Full date of birth: ', dd, '.', mm);

  sum1:=(dd div 10)+(dd mod 10); // высчитываем сумму цифр дня
  sum2:=(mm div 10)+(mm mod 10); // высчитываем сумму цифр месяца
  sum11:=(sum1 mod 10); // остаток от деления дня рождения на 10
  sum21:=(sum2 mod 10); // остаток от деления месяца на 10

  Write('Enter the current year: ');
  Readln(tg);

  Repeat
    tg:=tg+1;
    begin
    tgsum:=(tg mod 10);
    tgsum:=tgsum+(tg div 10 mod 10);
    tgsum:=tgsum+(tg div 100 mod 100);
    tgsum:=tgsum+(tg div 1000);
    end;
    until (tgsum=sum11) or (tgsum=sum21);

    Writeln(tgsum);


  Readln;
end.
Спасибо!
Den_Dodge вне форума Ответить с цитированием
Старый 03.10.2015, 12:57   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
"Счастливым" считается тот год, остаток от деления суммы цифр которого на 10 совпадает с аналогичным остатком для дня рождения или месяца.
предлагаю (с потолка) так:
Код:
function Lucky(d,m,y:integer):Integer;
var s,i,q,w,mo,do:integer; 
begin
 mo:=m mod 10; do:=d mod 10;
 Result:=-1;
 q:=y; w:=y; 
 while (q>0)and(w<9999) do begin
   i:=q; s:=0; while i>0 do begin s:=s+(i mod 10); i:=i div 10; end;   s:=s mod 10;
    if (s=mo) or (s=do) then begin Result:=q; exit; end;
   i:=w; s:=0; while i>0 do begin s:=s+(i mod 10); i:=i div 10; end;   s:=s mod 10;
    if (s=mo) or (s=do) then begin Result:=w; exit; end;
   dec(q); inc(w);
 end;
end;
Передаешь в нее дату рождения и получаешь ближайший счастливый год.
Идет?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста! написать программу, которая при вводе пользователем даты рождения выдает ближайший "счастливый" год Den_Dodge Помощь студентам 10 12.09.2015 22:28
Написать программу, которая запрашивает у пользователя номер месяца и выводит соответствующее название времени года (Delphi) Alina1807 Помощь студентам 11 01.04.2015 07:04
по дате рождения и текущей дате (день, месяц, год) определить сколько дней до дня рождения (код на ПАСКАЛЕ) Николай1 Помощь студентам 1 16.02.2012 09:07
Разделить дату на год,месяц, день Avalonix Общие вопросы Delphi 11 28.05.2008 09:56