powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Люди, помогите пожалуйста студентке!!!:))
4 сообщений из 4, страница 1 из 1
Люди, помогите пожалуйста студентке!!!:))
    #32146991
Элеонора
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите пожалуйста составить составить программу, которая считает Пятницы-13 с 1900 года...
...
Рейтинг: 0 / 0
Люди, помогите пожалуйста студентке!!!:))
    #32147168
Shweik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Люди, помогите пожалуйста студентке!!!:))
    #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
Люди, помогите пожалуйста студентке!!!:))
    #32147446
Фотография Niemi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, заманчиво, интересно.
надо будет голову поломать.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Люди, помогите пожалуйста студентке!!!:))
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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