Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
65 / 37 / 3
Регистрация: 30.11.2011
Сообщений: 109
1

Задача на структуры (Records)

30.11.2011, 17:48. Показов 1699. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Даже не знаю с чего начать - опыта работы с записями нуль. Условие задачи :

Дано:
type
число = 1..31;
месяц = 1..12;
год = 1..2000;
дата = record
ч : число;
м : месяц;
г : год
end;
ДеньНедели = (пн, вт, ср, чт, пт, сб, вс);

Считая, что все даты даются по григорианскому календарю (в «новом стиле»), описать:
функцию ПослЧисло( d ), вычисляющую количество дней в том месяце, которому принадлежит дата d;

Очень желательно пояснить решение хотя бы в общих чертах.Заранее спасибо
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.11.2011, 17:48
Ответы с готовыми решениями:

Структуры (Records)
Известна информация о 30 -ти клиентах пункта проката: фамилия, имя, отчество, адрес и...

Задача на records
У меня полный завал... проболела, пропустила много щас расхлёбываю... нужно в ближайшее время(((

Записи (Records)
Хочу попробовать создать программу которая ведет учет учеников которые ходят на курсы. Программа...

Типизированный файл. records
У меня есть динамический массив записей, при нажатии на баттон я записываю его в файл, а при...

5
43 / 43 / 14
Регистрация: 16.11.2011
Сообщений: 125
01.12.2011, 16:41 2
Судя по тому как я понял условие (а понял я его плохо), задача очень проста.
На вход функции подается структура(запись) с определенными полями. Вам нужно извлечь поле месяц. "x:=дата.месяц". В описании локальных переменных функции обозначить числовой массив типа byte[1..12] и заполнить его(31,28,31,30,31,30,31,31,30,31,30,31). Ответом будет являться Значение элемента массива с индексом х. Да и еще обязательно не забудьте проверить високосность года условаием типа:
if (x=2) and (дата.год mod 4 =0) then ответ=29;
ПС: для чего сточка "ДеньНедели = (пн, вт, ср, чт, пт, сб, вс); "?
2
65 / 37 / 3
Регистрация: 30.11.2011
Сообщений: 109
02.12.2011, 18:41  [ТС] 3
понятия не имею,но в условии задачи она зачем-то дана.возможно,что это условие нужно для выполнения остальных пунктов задания,но для первого,которое я и написал,как мне кажется,оно не нужно
1
65 / 37 / 3
Регистрация: 30.11.2011
Сообщений: 109
06.12.2011, 22:32  [ТС] 4
вот немного накодил,но программа вылетает.в чём ошибка?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
type
  TDate = record
    Month : 1..12;
    Year : 1..2000;
end;
 
var
  Date : TDate;
  d : integer;
 
function PoslNumber(m,y : integer): integer;
  var
    a : array[1..12] of integer;
    i : integer;
  begin
    a[1]:=31;
    a[3]:=31;
    a[4]:=30;
    a[5]:=31;
    a[6]:=30;
    a[7]:=31;
    a[8]:=31;
    a[9]:=30;
    a[10]:=31;
    a[11]:=30;
    a[12]:=31;
 
    if ( y mod 4 = 0 ) and ( m = 2 ) then
    a[2]:=29
      else
      a[2]:=28;
 
    i:=a[i];
    Result:=i;
  end;
 
begin
  readln(Date.Month,Date.Year);
  d:=PoslNumber(Date.Month,Date.Year);
  writeln(d);
  readln;
end.
Добавлено через 46 минут
подправил,не вылетает,но ответ выдаёт бредовый
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
type
  TDate = record
    Month : 1..12;
    Year : 1..2000;
end;
 
var
  Date : TDate;
  d : integer;
 
function PoslNumber(m,y : integer): integer;
  var
    a : array[1..12] of integer;
    i : integer;
  begin
    a[1]:=31;
    a[3]:=31;
    a[4]:=30;
    a[5]:=31;
    a[6]:=30;
    a[7]:=31;
    a[8]:=31;
    a[9]:=30;
    a[10]:=31;
    a[11]:=30;
    a[12]:=31;
 
    if ( y mod 4 = 0 ) and ( m = 2 ) then
    a[2]:=29
      else
      a[2]:=28;
 
    Result:=a[m];
  end;
 
begin
  readln(Date.Month,Date.Year);
  d:=PoslNumber(Date.Month,Date.Year);
  writeln(d);
  readln;
end.
1
43 / 43 / 14
Регистрация: 16.11.2011
Сообщений: 125
07.12.2011, 08:24 5
подправил,не вылетает,но ответ выдаёт бредовый
А при каком конкретном значении выдает неверный ответ. Я вбил в delphi этот код - вполне приемлем.
Единственное замечание, что надо проверить входные данные
Assert((Date.Month>=1)AND(Date.Month<=12), 'Error: value "month" is not valid');
Тоже самое сделать с годом.
1
65 / 37 / 3
Регистрация: 30.11.2011
Сообщений: 109
07.12.2011, 15:23  [ТС] 6
Цитата Сообщение от Demsol Посмотреть сообщение
А при каком конкретном значении выдает неверный ответ. Я вбил в delphi этот код - вполне приемлем.
Единственное замечание, что надо проверить входные данные
Assert((Date.Month>=1)AND(Date.Month<=12), 'Error: value "month" is not valid');
Тоже самое сделать с годом.
оказалось,что я просто значения вводил не в том порядке,поэтому месяц у меня мог быть какой-нибудь 1900 проверку,действительно,надо бы добавить.спасибо
1
07.12.2011, 15:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.12.2011, 15:23
Помогаю со студенческими работами здесь

Информация о клиентах (records)
1. Так получилось, что вы работаете в компьютерном клубе (Интернет-кафе). Шеф поручил ...

Результат сортировки записать в файл с помощью records
нужно результат проги(сортировка) записать в файл с помощью records.

Задача на records: Справочная автовокзала
В справочной автовокзала хранится расписание движения автобусов. Для каждого рейса указаны его...

задача нужна на экзамен на тип Records!!!!!
Известны данные о 20-ти учениках класса: фамилии, имена, отчество, дата рождения (год, номер месяца...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru