Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.77
Егор Ярыславски
0 / 0 / 0
Регистрация: 23.09.2012
Сообщений: 9
#1

Определение дня недели по введенной дате - C++

28.10.2012, 11:41. Просмотров 1842. Ответов 5
Метки нет (Все метки)

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

C++
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
#include<stdio.h>
#include<conio.h>
int main()
{
 clrscr();
 int y,m,d;
 long days=0;
 int month[12]={31,28,31,30,31,30,31,31,30,31,30,31};
 char week[7][4]={"mon","tue","wed","thu","fri","sat","sun"};
 int rest=0;
 printf("input days,month and year (dd.mm.yyyy)\n");
 do
 {
  scanf("\n%2d%2d%4d",&d,&m,&y);
  if ((d<=0)||(d>31)||(m<=0)||(m>12)||(y<0)) printf("\nyou input incorrect vallues");
 }
 while ((d<=0)||(d>31)||(m<=0)||(m>12)||(y<0));
 printf("\ninput date is %d.%d.%d",d,m,y);
 for(int i=1800;i<y;i++)
 {
  if((i%4==0) && ((i%100!=0)||(i%400==0))) days+=366;
  else days+=365;
 }
 printf("\n%ld",days);
 for (i=0;i<m-1;i++)
 {
  days+=month[i];
 }
 printf("\n%ld",days);
 if (((y%4==0)&&((y%100!=0)||(y%400==0)))&&(m>2)) days++;
 days+=d;
 printf("\n%ld",days);
 rest=days%7;
 switch (rest)
 {
  case 0: printf("this is %s",week[2]);break;
  case 1: printf("\nthis is %s",week[3]);break;
  case 2: printf("\nthis is %s",week[4]);break;
  case 3: printf("\nthis is %s",week[5]);break;
  case 4: printf("\nthis is %s",week[6]);break;
  case 5: printf("\nthis is %s",week[0]);break;
  case 6: printf("\nthis is %s",week[1]);break;
 }
 printf("\n%d",rest);
 getch();
 return 1;
}
П.с. для проверки количества дней сайтом этим http://whoyougle.ru/time/counter этим
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.10.2012, 11:41     Определение дня недели по введенной дате
Посмотрите здесь:

Определение дня недели по дате - C++
Помогите исправить, неправильно находит день недели. int date_day::true_day() const { size_t totalDays = 0; bool...

Определение дня недели по дате - C++
Помогите найти ошибку. Работает, но не корректно. Определяет не тот день. #include&lt;stdio.h&gt; #include&lt;iostream&gt; void main() { ...

Вычисление дня недели по дате - C++
здравствуйте. как можно вычислить день недели по дате? слышала про формулу Зеллера, но там мало что понятного Спасибо!

Алгоритм вычисления дня недели по дате - C++
Посдкажите алгоритм вычисления дня недели по дате( день, месяц, год). int a = (14 - month)/12; int y = year - a; int m = month +...

Расчет дня недели по дате, исправьте ошибки - C++
Программа должна считать день недели по дате, использую по заданию какую то римскую формулу. #include &lt;iostream&gt; #include...

Написать программу, которая запрашивает у пользователя номер дня недели, затем выводит название дня недели - C++
Написать программу, которая запрашивает у пользователя номер дня недели, затем выводит название дня недели или сообщение об ошибке, если...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rebel123
1 / 1 / 0
Регистрация: 06.05.2012
Сообщений: 12
28.10.2012, 12:03     Определение дня недели по введенной дате #2
C++
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
#include <stdio.h>
#include <conio.h>
int main() 
{
 int y,m,d;
 long days=-1;
 int month[12]={31,28,31,30,31,30,31,31,30,31,30,31};
 char week[7][4]={"mon","tue","wed","thu","fri","sat","sun"};
 int rest=0;
 printf("input days,month and year (dd.mm.yyyy)\n");
 do
 {
  scanf("\n%2d%2d%4d",&d,&m,&y);
  if ((d<=0)||(d>31)||(m<=0)||(m>12)||(y<0)) printf("\nyou input incorrect vallues");
 }
 while ((d<=0)||(d>31)||(m<=0)||(m>12)||(y<0));
 printf("\ninput date is %d.%d.%d",d,m,y);
 for(int i=1800;i<y;i++)
 {
  if((i%4==0) && ((i%100!=0)||(i%400==0))) days+=366;
  else days+=365;
 }
 printf("\n%ld",days);
 for (int i=0;i<m-1;i++)
 {
  days+=month[i];
 }
 printf("\n%ld",days);
 if (((y%4==0)&&((y%100!=0)||(y%400==0)))&&(m>2)) days++;
 days+=d;
 printf("\n%ld",days);
 rest=days%7;
 switch (rest)
 {
  case 0: printf("this is %s",week[2]);break;
  case 1: printf("\nthis is %s",week[3]);break;
  case 2: printf("\nthis is %s",week[4]);break;
  case 3: printf("\nthis is %s",week[5]);break;
  case 4: printf("\nthis is %s",week[6]);break;
  case 5: printf("\nthis is %s",week[0]);break;
  case 6: printf("\nthis is %s",week[1]);break;
 }
 printf("\n%d",rest);
 getch();
 return 1;
}
long days = -1

P.S. clrscr(); - ругался мой компилятор на этот код, причем conio.h. подключен. Я его убрал, хотите, добавьте вновь.
comeTrue
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 10
28.10.2012, 12:04     Определение дня недели по введенной дате #3
33 rest=(days-1)%7; так замени
Егор Ярыславски
0 / 0 / 0
Регистрация: 23.09.2012
Сообщений: 9
28.10.2012, 12:11  [ТС]     Определение дня недели по введенной дате #4
Спасибо всем, прогорамма работает корректно,но вопрос,почему минус один?
comeTrue
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 10
28.10.2012, 12:37     Определение дня недели по введенной дате #5
если ты начнешь с 1801 года, -1 не понадобится, например

P.S. почему - не знаю. =)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.10.2012, 13:58     Определение дня недели по введенной дате
Еще ссылки по теме:

Написать программу, которая по номеру дня недели (целому числу от 1 до 7) выдает в качестве результата название дня недели - C++
!!!!!

Определить номер дня недели для заданного номера дня года - C++
а как это примерно будет на C++ ?

Определить номер дня недели для заданного дня года - C++
Дни недели пронумерованы следующим образом: 0 — воскресенье, 1 — понедельник, 2 — вторник, ..., 6 — суббота. Дано целое число K, лежащее в...

Выведите номер дня недели для данного дня года - C++
Помогите,пожалуйста...Среда Free Pascal Дан порядковый номер дня года (отсчет идет с 1-го января). Требуется вывести номер дня недели...

Составить программу, которая по номеру введенного дня недели вводит название дня. - C++
Составить программу, которая по номеру введенного дня недели вводит название дня.

Составьте программу, печатающую по номеру дня недели (число от 1 до 7) название этого дня - C++
Составьте программу, печатающую по номеру дня недели (число от 1 до 7) название этого дня (понедельник, вторник и т. д.).


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

Или воспользуйтесь поиском по форуму:
Егор Ярыславски
0 / 0 / 0
Регистрация: 23.09.2012
Сообщений: 9
28.10.2012, 13:58  [ТС]     Определение дня недели по введенной дате #6
Ну в принципе, главное - чтобы работало, а "-1",кажется, нужна ,т.к. мы считаем уже,что день 1-ый прошёл 1800 года уже прошел,всем спасибо!
Yandex
Объявления
28.10.2012, 13:58     Определение дня недели по введенной дате
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru