Технический форум

Технический форум (http://www.tehnari.ru/index.php)
-   Помощь студентам (http://www.tehnari.ru/forumdisplay.php?f=41)
-   -   Определить, сколько дней прошло с начала сезона. (http://www.tehnari.ru/showthread.php?t=31793)

Ins1s 07.01.2010 19:28

Определить, сколько дней прошло с начала сезона.
 
Даны числа A,B,C, ( число, месяц , год,) Определить сколько дней прошло с начало сезона.!!

Я с case полный профан

Вы и в русском языке, похоже, тоже не сильны! Ваш модератор.

AlexZir 07.01.2010 19:33

а в чем проблема? открываете справку и читаете! буквально оттуда информация:
Цитата:

Оператор case состоит из выражения (селектора) и списка операторов, каждый из которых выполнится в определённом случае.

Синтаксис:
case выражение of
вариант : оператор;
...
вариант : оператор;
end

или

case выражение of
вариант : оператор;
...
вариант : оператор;
else оператор
end

Замечания:
"вариант" состоит из одной или большего количества констант или диапазонов, разделённых запятыми. Часть "else" является необязательной.

Пример:
case Ch of
'A' .. 'Z', 'a' .. 'z' : WriteLn('Буква');
'0' .. '9' : WriteLn('Цифра');
'+', '-', '*', '/' : WriteLn('Оператор');
else WriteLn('Специальный символ')
end;
Пишите ваш вариант решения, если что неправильно - поправим.

Ins1s 07.01.2010 19:36

спс=) щас попробую ...

Ins1s 07.01.2010 19:50

Program DeHb;
Var day :char;
x:real;
begin
readln(day);
case day OF
365-day = x; //недопустимо по правилам синтаксиса языка
end;
writeln (day);
end.



тупо конешно но как смог:(

Ins1s 07.01.2010 19:50

и то ошибку выдает неизвестный индефикатор:(

Цитата:

Сообщение от Ins1s (Сообщение 279235)
Даны числа A,B,C, ( число, месяц , год,) Определить сколько дней прошло с начало сезона.!!

Я с case полный профан

Вы и в русском языке, похоже, тоже не сильны! Ваш модератор.

привык-) к словам таким:)

AlexZir 07.01.2010 19:55

Программу написали полностью неверно.

Кстати, мне не вполне понятна роль оператора выбора в вашем задании. Изложите точное содержание задание, данное вам преподавателем.

И что за 3 числа вам даны? Это дата начала сезона или текущая дата?

Ins1s 07.01.2010 19:58

3 числа *365* - эт оскока дней в год у !!! а задание вот такое .. как я выше написал!! оно полностью изложена сверху

Ins1s 07.01.2010 20:02

а по какому правилу тогда?

AlexZir 07.01.2010 20:12

Я имею в виду, числа A, B, C - это дата начала сезона?

MrSTEP 07.01.2010 20:14

фрагмент кода:
Код:

case b of:
12,1,2: seson:='Зима';
3..5: seson:='Весна';
6..8: seson:='Лето';
9..11: seson:='Осень';
end;
case b of:
{с начала сезона прошло количество дней, равное сегодняшней дате}
12,3,6,9: n:=a;
{с начала сезона прошло количество дней, равное сумме предыдущих месяцев плюс сегодняшняя дата}
1,4: n:=31+a;
2: n:=31+31+a;
5,8,11: n:=31+30+a;
7,10: n:=30+a;
end;
writeln ('Сейчс на дворе ',seson, '; дней с начала сезона - ', n);


Ins1s 07.01.2010 20:15

это число месяц и год!!

AlexZir 07.01.2010 20:26

Если за сезон принято считать время года, то фрагмент варианта решения из #10 вполне подходит. И все равно не ясно, что за число, месяц и год вам дано? Текущая дата для проверки?

MrSTEP 07.01.2010 20:28

текущие ДД ММ ГГГГ, как я понял. например 07 01 2010

AlexZir 07.01.2010 20:30

Тогда вам в листинге для ее получения нужно использовать системную дату. В этом случае программа будет работать более корректно. Да и високосные годы вы не отрабатываете ;).

Ins1s 07.01.2010 20:31

степ правильно сказал .. но только мне не за сезон считать.. а нужно например ввести число 28 08 2009 и нужно посчитать сколько дней прошло с начала сезона.!

Vladimir_S 07.01.2010 20:37

Цитата:

Сообщение от Ins1s (Сообщение 279283)
степ правильно сказал .. но только мне не за сезон считать.. а нужно например ввести число 28 08 2009 и нужно посчитать сколько дней прошло с начала сезона.!

Слушайте, уважаемый, не надо гневаться. Вас просят ясно и четко ответить на вопрос - "Что такое (в данном случае) сезон?". Это что - время года? Или это горнолыжный сезон? Туристский? Отопительный? Брачный? Будьте любезны пояснить.

Ins1s 07.01.2010 20:41

сезон это время года ... :) если честно я не зна ю в задание не написано!

високосные нет..:)

MrSTEP 07.01.2010 20:55

Цитата:

Сообщение от Ins1s (Сообщение 279283)
но только мне не за сезон считать.. а нужно например ввести число 28 08 2009 и нужно посчитать сколько дней прошло с начала сезона.!

ну между прочим, мой листинг это и считает.. но может маленько некорректно.. ведь если сегодня первое декабря, то с начала сезона прошло 0 целых дней, 2ого декабря - 1 один день. Значит, листинг можно подправить:
Код:

case b of:
12,1,2: seson:='Зима';
3..5: seson:='Весна';
6..8: seson:='Лето';
9..11: seson:='Осень';
end;
case b of:
{с начала сезона прошло количество дней, равное сегодняшней дате}
12,3,6,9: n:=a-1;
{с начала сезона прошло количество дней, равное сумме предыдущих месяцев плюс сегодняшняя дата}
1,4: n:=31+a-1;
2: n:=31+31+a-1;
5,8,11: n:=31+30+a-1;
7,10: n:=30+a-1;
end;
writeln ('Сейчс на дворе ',seson, '; с начала сезона прошло ', n, ' дней');


AlexZir 07.01.2010 21:00

В общем, вопрос решенный :)

Ins1s 07.01.2010 22:27

ага спс=) вам!!!!!

Ins1s 08.01.2010 00:06

program Oo;
var seson:char;
n,b:real;
сase b of: ---------------------------- тут он выдвет ошибку.
12,1,2: seson:='Зима';
3..5: seson:='Весна';
6..8: seson:='Лето';
9..11: seson:='Осень';
end;
case b of:
{с начала сезона прошло количество дней, равное сегодняшней дате}
12,3,6,9: n:=a-1;
{с начала сезона прошло количество дней, равное сумме предыдущих месяцев плюс сегодняшняя дата}
1,4: n:=31+a-1;
2: n:=31+31+a-1;
5,8,11: n:=31+30+a-1;
7,10: n:=30+a-1;
end;
writeln ('Сейчс на дворе ',seson, '; с начала сезона прошло ', n, ' дней');
END.

MrSTEP 08.01.2010 00:29

Собственно ступил, после of не надо двоеточия. И b должно быть целого типа

Ins1s 08.01.2010 00:35

ага спс =)

MrSTEP 08.01.2010 00:36

Да, и seson не char (символ), a string (строка)

Vladimir_S 08.01.2010 09:41

Цитата:

Сообщение от MrSTEP (Сообщение 279433)
Да, и seson не char (символ), a string (строка)

Ага, а еще не описана переменная а, а еще не поставлен общий открывающий begin, а еще пропущен останов, а еще...
Ну ладно, как-то так (проверено):
Код:

program Oo;
Var
 Season:STRING;
 date,month,n:INTEGER;
BEGIN
 WriteLn('Enter current month and date:');
 Write('Month= '); ReadLn(Month);
 Write('Date= '); ReadLn(Date);
 Case Month of
  12,1,2: Season:='winter';
    3..5: Season:='spring';
    6..8: Season:='summer';
  9..11: Season:='autumn';
 end;
 Case Month of
{Number of days passed from the season beginning is equal to current date}
  12,3,6,9: n:=Date-1;
{Number of days passed from the season beginning is equal to current date
 plus the sum of days in previous month(s)}
      1,4: n:=31+Date-1;
        2: n:=31+31+Date-1;
    5,8,11: n:=31+30+Date-1;
      7,10: n:=30+Date-1;
 end;
 Writeln ('It is '+Season+' now; ',n,' days passed from the beginning.');
 ReadLn;
END.

Комментарии:
1. Перешел на английский, потому что приходится прыгать между Windows и DOS, а у них разные кодировки кириллицы. Транслит же терпеть не могу.
2. Один из общих принципов написания программ: идентификаторы следует, по возможности, использовать осмысленные, а не безликие a, b, c...

MrSTEP 08.01.2010 11:36

Ну вот я написал фрагмент программы, который обрабатывает полученные данные и выводит их. Автор же принял это за весь раздел операторов.
Комментарии к комментариям:
1) писал код прямо здесь, на форуме, так что проблем с кодировками не было. Как будет в итоге - по-русски, по-английски или транслитом, решать автору;
2) переменные а, b и с были заявлены автором в первом посте. Сам же я тоже предпочитаю использовать более-менее осмысленные имена. ну кроме переменной i, которая на рынке счетчиков уже около 20 лет :)
З.Ы. Проблем с кодировкой в Windows и DOS можно избежать, если использовать текстовый редактор AkelPad. С его помощью файл можно сохранить в такой кодировке, в которой и винда, и дос будут корректно отображать кириллицу

AlexZir 08.01.2010 12:06

Вот это вряд ли, хотя им же можно и перекодировать в другую кодировку. А еще можно пользоваться Notepad++, тот вообще синтаксис подсвечивает :)

Ins1s 09.01.2010 15:34

спс:) вам.. я тут многое узнал:)


Часовой пояс GMT +4, время: 04:50.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.