Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Люди, помогите пожалуйста студентке!!!:)) / 4 сообщений из 4, страница 1 из 1
23.04.2003, 17:35
    #32146991
Элеонора
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Люди, помогите пожалуйста студентке!!!:))
Помогите пожалуйста составить составить программу, которая считает Пятницы-13 с 1900 года...
...
Рейтинг: 0 / 0
23.04.2003, 19:40
    #32147168
Shweik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Люди, помогите пожалуйста студентке!!!:))
...
Рейтинг: 0 / 0
24.04.2003, 10:10
    #32147412
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Люди, помогите пожалуйста студентке!!!:))
А зачем, прикольный вопрос не по теме!

Вам просто надо:
Во-первых составить массив 13 чисел в году (номеря дня в году)...
Простой - 13, 44, 72, 103, 133, 164, 194, 225, 256, 286, 317, 347
Високосный - 13, 44, 73, 104, 134, 165, 195, 226, 257, 287, 318, 348

Потом берешь от этих чисел остаток от деления на 7. Полученное число скажет тебе на сколько дней недели сдвигается день недели для 13 чисел по отношению к 1 января. Далее вычисляешь день недели для 1 января каждого года.

Есть еще вариант:
Перебрать все 13 числа месяцев всех годов и вызывать мою функцию, она абсолютно не зависит от системы, и вычисляет день недели самомтоятельно:
Из предлагаемого куска текста вызывай dayOfWeek(vYear, vMonth, vDay)

Код: plaintext
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.
var aMonthLen = new Array(
  new Array( 31 ,  28 ,  31 ,  30 ,  31 ,  30 ,  31 ,  31 ,  30 ,  31 ,  30 ,  31 ),
  new Array( 31 ,  29 ,  31 ,  30 ,  31 ,  30 ,  31 ,  31 ,  30 ,  31 ,  30 ,  31 )
);

var aFirstDay = new Array(
  new Array(  0 ,  3 ,  3 ,  6 ,  1 ,  4 ,  6 ,  2 ,  5 ,  0 ,  3 ,  5 ),
  new Array(  6 ,  2 ,  3 ,  6 ,  1 ,  4 ,  6 ,  2 ,  5 ,  0 ,  3 ,  5 )
);

// В этом году  1  января был понедельник
var knownYear =  1990 ;

function isLeapYear(value) {
  if (((value %  4 ) ==  0 ) && ((value %  100 ) !=  0 ) | ((value %  400 ) ==  0 )) {
    return  1 ;
  } else {
    return  0 ;
  }
}

function numberOfLeapYears(startYear, endYear) {
  var result =  0 ;
  var temp =  0 ;

  if (startYear > endYear) {
    temp = startYear;
    startYear = endYear +  1 ;
    endYear = temp;
  }
  for (temp = startYear; temp <= endYear; temp++) {
    result += isLeapYear(temp);
  }
  return result;
}

function dayOfWeek(vYear, vMonth, vDay) {
  var result =  1 ;

  if (vYear > knownYear) {
    result = (vYear-knownYear) + numberOfLeapYears(knownYear, vYear);
  } else {
    result = (vYear-knownYear) - numberOfLeapYears(knownYear, vYear);
  }

  if (result <  0 ) {
    result = ( 7  - (Math.abs(result) %  7 ))
  }

  result += aFirstDay[isLeapYear(vYear)][vMonth- 1 ];
  result += vDay -  1 ;
  result %=  7 ;

  return result;
}

Все написано на JavaScript, но с легкостью переводится на любой язык программирования.
...
Рейтинг: 0 / 0
24.04.2003, 10:37
    #32147446
Niemi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Люди, помогите пожалуйста студентке!!!:))
да, заманчиво, интересно.
надо будет голову поломать.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Люди, помогите пожалуйста студентке!!!:)) / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]