0 / 0 / 0
Регистрация: 17.03.2018
Сообщений: 9
1

Не могу разобраться в чем ошибка

17.03.2018, 16:56. Показов 1113. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят, посмотрите пожалуйста эту програмку:
Не работает 13 строчка, пишет нельзя считывать данные этого типа.
Хотя в аналогичных алгоритмах все работает.
Сам не могу понять в чем проблема, буду рад если поможете.

Pascal
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
Program P443;
var 
  inmonth:array[1..24] of string[8]=('январь','февраль','март','апрель','май','июнь','июль','август','сентябрь','октябрь',
                                    'ноябрь','декабрь','1','2','3','4','5','6','7','8','9','10','11','12');
  month,day,date,vday,vdate,check:integer;
  sdate,svdate,sel:string;
begin
  writeln('Программа определения количества дней до конца года');
  writeln('Введите число');
  readln(day);
  writeln('Ведите номер или название месяца');
  write('Номер или название месяца: ');
  readln(inmonth);
  month:=1;
while(month<=24)and(sel<>inmonth[month]) do inc(month);
case month of
  13: month:=1;
  14: month:=2;
  15: month:=3;
  16: month:=4;
  17: month:=5;
  18: month:=6;
  19: month:=7;
  20: month:=8;
  21: month:=9;
  22: month:=10;
  23: month:=11;
  24: month:=12;
end;
  if not(month in [1..12])or((month=2)and not(day in [1..29]))
  or((month in [4,6,9,11])and not(day in [1..30]))
  or((month in [1,3,5,7,8,10,12])and not(day in [1..31]))
  then
begin 
    writeln('Неверная дата');
  exit;
end;
  check:=day;
case month of
  1: vday:=day;    //Январь
  2:               //Февраль
  begin
    day:=day+31;
    vday:=day;
  end;
  3: day:=day+59;  //Март   
  4: day:=day+90;  //Апрель 
  5: day:=day+120; //Май
  6: day:=day+151; //Июнь
  7: day:=day+181; //Июль
  8: day:=day+212; //Август
  9: day:=day+243; //Сентябрь
  10: day:=day+273; //Октябрь
  11: day:=day+304; //Ноябрь
  12: day:=day+334; //Декабрь
end;
  if (month>2) then vday:=day+1;
  date:=365-day;
  vdate:=366-vday;
case date mod 100 of
    11..19:sdate:=date+' дней'
  else
case date mod 10 of
    2..4:sdate:=date+' дня';
    5..9,0:sdate:=date+' дней';
  else sdate:=date+' день';
end;
end;
case vdate mod 100 of
    11..19:svdate:=vdate+' дней'
  else
case vdate mod 10 of
    2..4:svdate:=vdate+' дня';
    5..9,0:svdate:=vdate+' дней';
  else svdate:=vdate+' день';
end;
end;
  if (month=2) and (check=29) or (sdate=svdate) then
    writeln('До конца года осталось ',svdate)
  else
    writeln('До конца года осталось ',sdate,'      Если год високосный - ',svdate)
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.03.2018, 16:56
Ответы с готовыми решениями:

Не могу разобраться в чем ошибка
Задача: Составить описание класса многочленов от одной переменной, задаваемых степенью многочлена...

Не могу разобраться в чём ошибка
Помогите, пожалуйста, разобраться в чём ошибка procedure TForm1.Button1Click(Sender: TObject);...

В чем ошибка? не могу разобраться
В чем ошибка? не могу разобраться. Вот задание: Три устройства обрабатывают заявки в течении 690...

Не могу разобраться в чем ошибка
import math family = input('Здравствуйте, как вас зовут? ') print(family + ', мы рады представить...

5
Эксперт Pascal/Delphi
6809 / 4566 / 4819
Регистрация: 05.06.2014
Сообщений: 22,438
17.03.2018, 17:01 2
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

Цитата Сообщение от Nessweet Посмотреть сообщение
нельзя считывать данные этого типа.
Это массив.
Нужно указать индекс массива.
1
0 / 0 / 0
Регистрация: 17.03.2018
Сообщений: 9
17.03.2018, 17:06  [ТС] 3
ZX Spectrum-128, Спасибо большое, заблудился в трех соснах называется)
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7648 / 4488 / 2810
Регистрация: 22.11.2013
Сообщений: 12,828
Записей в блоге: 1
17.03.2018, 17:19 4
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

Вместо 16-29
Pascal
16
  if month>12 then Dec(month,12);
1
0 / 0 / 0
Регистрация: 17.03.2018
Сообщений: 9
17.03.2018, 17:30  [ТС] 5
bormant, Спасибо за совет, тут еще есть чего оптимизировать, с этим я еще постараюсь разобраться, для препода главное чтобы работало)
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7648 / 4488 / 2810
Регистрация: 22.11.2013
Сообщений: 12,828
Записей в блоге: 1
17.03.2018, 18:16 6
Да и в остальном -- неоправданно запутано.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
const sDay: array [0..2] of String[5] = ('день','дня','дней');
function pl(n: Integer): Integer;
begin
  pl:=2; n:=Abs(n mod 100);
  if not (n in [11..19]) then
    case n mod 10 of 1: pl:=0; 2..4: pl:=1; end;
end;
function dm(n: Integer): Integer;
begin
  dm:=31; case n of 2: dm:=28; 4,6,9,11: dm:=30; end;
end;
 
  for j:=12 downto month+1 do Inc(d,dm(j));
  Inc(d,dm(month)-day);
  if (month=2) and (day=29) then Inc(d);
  WriteLn('До конца года ',d,' ',sDay[pl(d)]);
  if (month=1) or (month=2) and (day<29) then
    WriteLn('високосного: ',d+1,sDay[pl(d+1)]);
Вот и все решение.

Добавлено через 6 минут
Если про день-дня-дней не было в условии, меняем вывод на "Дней до конца года: сколько" и не нужно подбирать число: единственное, двойственное, множественное.
0
17.03.2018, 18:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.03.2018, 18:16
Помогаю со студенческими работами здесь

Не могу разобраться в чём ошибка
Массив заполнен с помощью генератора случайных чисел. Разности (1-2,3-4,..,19-20) отсортировать по...

Не могу разобраться, в чём ошибка в движке
Добрый день, уважаемые кодеры! Вопрос вот в чём, есть сайт, движок самопис, после переноса на...

Не могу разобраться в чем ошибка кода
Только начала изучать язык С. Преподаватель дала пример лабораторной и я набрала ее, чтобы...

Работа со строкой. Не могу разобраться, в чём ошибка.
Есть такой код: HANDLE Search;//Объявляем хендл WIN32_FIND_DATAA FileSearch;//Создаем структуру...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru