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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.04.2013, 11:35   #1
sklaim
Новичок
Джуниор
 
Регистрация: 30.04.2013
Сообщений: 2
По умолчанию Записи

Добрый день, помогите пожалуйста решить задачу на записи.
Задача:
Дан массив А, компонентами которого являются полями типа-записи (фамилия, имя, дата рождения). Найдите компоненты этого массива, содержащие сведения о людях, родившихся в последние дни любого месяца.
sklaim вне форума Ответить с цитированием
Старый 30.04.2013, 11:54   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну и как, есть мысли, как Вы собираетесь эту "сложную" задачу решать?

для начала, можете поиском по форуму пройтись, посмотреть чужие примеры...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 30.04.2013, 11:58   #3
sklaim
Новичок
Джуниор
 
Регистрация: 30.04.2013
Сообщений: 2
По умолчанию

я попытался ее решить, но не очень-то получилось

Код:
const x = 1;
Type people = Record
   f,n:String;
   d,m,y:integer;
   End;
 Var
 All: Array [1..x] of people;
 i: integer;
Begin
    For i:=1 to  x do
     with All[i] do
        begin 
            Writeln('Введите фамилю, имя и дату рождения');
            Readln(f);
            Readln(n);
            Readln(d,m,y);
            Case d of 
     29: if (m=2) then writeln('Этот человек родился в последний день данного месяца ');
     30: if (m=4) or (m=6) or (m=9) or (m=11) then  writeln('Этот человек родился в последний день данного месяца ');   
     31: if (m=1) or  (m=3) or (m=5) or (m=7) or (m=8) or (m=10) or (m=12) then  writeln('Этот человек родился в последний день данного месяца ');
     else Writeln('...');
                   end; 
          end;
     Readln;
     End.


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 30.04.2013 в 12:53.
sklaim вне форума Ответить с цитированием
Старый 30.04.2013, 12:48   #4
netpolice
Форумчанин
 
Аватар для netpolice
 
Регистрация: 14.02.2013
Сообщений: 222
По умолчанию

Что не так то? Вроде как вы более-менее правильно сделали.

Правда вы попытались всех обмануть (и себя видимо тоже).

И проверяете все сразу.

Я бы посоветовал бы вам следующий код вынести в отдельный цикл:

Цитата:
Case d of
29: if (m=2) then writeln('Этот человек родился в последний день данного месяца ');
30: if (m=4) or (m=6) or (m=9) or (m=11) then writeln('Этот человек родился в последний день данного месяца ');
31: if (m=1) or (m=3) or (m=5) or (m=7) or (m=8) or (m=10) or (m=12) then writeln('Этот человек родился в последний день данного месяца ');
else Writeln('...');
end;
netpolice вне форума Ответить с цитированием
Старый 30.04.2013, 19:30   #5
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
Case d of
я бы все таки
Код:
case m of
запилил, короче бы получилось)
Код:
case m of
2: if (d=28) then writeln('Last day of this month');// тут как бы от года зависит високосный не високосный)
4,6,9,11: if d=30 then writeln('Last day of this month');
1,3,5,7,8,10,12: if d=31 then writeln('Last day of this month');
end;
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"

Последний раз редактировалось Mad_Cat; 30.04.2013 в 19:34.
Mad_Cat вне форума Ответить с цитированием
Старый 30.04.2013, 19:37   #6
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Код:
            Case d*100 + m of 
     2902, 2802: writeln('Этот человек родился в последний день данного месяца ');
     3004, 3006, 3009, 3011: writeln('Этот человек родился в последний день данного месяца ');   
     3101, 3103, 3105, 3107, 3108, 3110,3112: writeln('Этот человек родился в последний день данного месяца ');

Последний раз редактировалось s-andriano; 30.04.2013 в 19:41.
s-andriano вне форума Ответить с цитированием
Старый 30.04.2013, 23:29   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

s-andriano, а зачем в вашем пример ТРИ ветки с одним и тем же оператором?!
тогда уже так:
Код:
Case d*100 + m of 
  2902, 2802,
  3004, 3006, 3009, 3011,
  3101, 3103, 3105, 3107, 3108, 3110,3112 : writeln('Этот человек родился в последний день данного месяца ');   
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.05.2013, 10:42   #8
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

А там что, одно и то же сообщение? Ж8( )
Я как-то даже не удосужился прочитать, и решил, что раз ветки три, то и сообщения три разных.
Кстати, раз уж сообщение одно, я бы рекомендовал воспользоваться не case а фактом вхождения в множество. Правда, для этого нужно привести выражение к диапазону byte.
Например, так:
Код:
if m*10 + (d-28) in [20, 21, 42, 62, 92, 112, 13, 33, 53, 73, 83, 103, 123] then
Да, прочитал условие (узнал много интересного), - думаю, там нужно начать с определения, в високосном году родился человек или нет.
И уже тогда проверять на принадлежность одному из множеств:
[20, 42, 62, 92, 112, 13, 33, 53, 73, 83, 103, 123]
или
[21, 42, 62, 92, 112, 13, 33, 53, 73, 83, 103, 123]

Последний раз редактировалось s-andriano; 01.05.2013 в 10:51.
s-andriano вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удалить записи из таблицы, если дата в записи старше 30 дней Aleksandr БД в Delphi 10 28.03.2013 21:33
Оцените математической формулой, насколько больше цифр в двоичной записи большого числа, чем в его десятичной записи. Анюта.Хом Помощь студентам 1 02.12.2011 23:13
Записи DrDre9991 Паскаль, Turbo Pascal, PascalABC.NET 2 23.06.2010 11:09
Записи IIaJIbI4 Помощь студентам 0 24.12.2009 18:23