Определить номер дня недели для K-го дня года - C (СИ)

Узнай цену своей работы

Формулировка задачи:

РЕШИТЕ,ПОЖАЛУЙСТА Дни недели пронумерованы следующим образом: 1 — понедельник, 2 — вторник, …, 6 — суббота, 7 — воскресенье. Дано целое число K, лежащее в диапазоне 1–365, и целое число N, лежащее в диапазоне 1–7. Определить номер дня недели для K-го дня года, если известно, что в этом году 1 января было днем недели с номером N.

Решение задачи: «Определить номер дня недели для K-го дня года»

textual
Листинг программы
#include <stdlib.h>
#include <stdio.h>
#include <locale.h>
#include <time.h>
#define BF_LEN 80
#define SEC_PER_DAY 60*60*24
void main(int argc, char **argv)
{ int doy,y1st;
 time_t dtsec;
 struct tm *ptm;
 char *bf = malloc(BF_LEN);
cputs("Enter DOY[1-365]:"); scanf("%d",&doy);
cputs("Enter 1st day #:"); scanf("%d",&y1st);
dtsec = --doy*SEC_PER_DAY;  //время с начала года в секундах, дни начинаются с 0
ptm = localtime(&dtsec);    //конвертим в структуру
strftime(bf,BF_LEN,"day entered is %d %B",ptm);//выводим дату для дня года
puts(bf);
dtsec-=(y1st-2)*SEC_PER_DAY;
ptm = localtime(&dtsec);
strftime(bf,BF_LEN,"weekday name %A",ptm);
puts(bf);
}

Объяснение кода листинга программы

В этом коде выполняются следующие действия:

  1. Ввод с клавиатуры двух чисел:
    • doy (от 1 до 365) - номер дня года
    • y1st (от 1 до 7) - номер первого дня недели для года
  2. Вычисление времени с начала года в секундах для введенного doy. Дни начинаются с 0, поэтому вычитается 1.
  3. Преобразование времени в структуру tm с помощью функции localtime().
  4. Форматирование строки с датой для введенного doy и вывод ее на экран с помощью функции puts().
  5. Вычисление времени с начала года в секундах для первого дня недели (y1st-2), учитывая, что дни недели с 1 по 7 считаются с 0.
  6. Преобразование времени в структуру tm с помощью функции localtime().
  7. Форматирование строки с названием дня недели для введенного doy и вывод ее на экран с помощью функции puts().

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.308 из 5
Похожие ответы