Как модифицировать календарь, чтобы он начинался с произвольного дня, а не только с понедельника - C (СИ)

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

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

Пользователь вводит КОЛИЧЕСТВО ДНЕЙ В МЕСЯЦЕ и Число (день недели 1-понедельник, 2-вторник, и т.д.)с которой начинается неделя. Вывести календарь на экран P.S. У меня имеется календарь, который запрашивает количество дней в месяце и всегда начинается с понедельника. Как модифицировать, чтобы начинался с произвольного дня, введенного самим.
[#include <stdio.h>
 
int main(void) {
 
int i, n;
scanf("%d", &n);
printf("Mon\tTue\tWed\tThu\tFri\tSat\tSun\n");
    for (i = 1; i <= n; i++)
{
    printf( "%d \t" , i);
    if (i % 7 == 0) printf( "\n");
}
 
    return 0;
}

Решение задачи: «Как модифицировать календарь, чтобы он начинался с произвольного дня, а не только с понедельника»

textual
Листинг программы
#include <stdio.h>
 
int main(void)
{
    int days;
    int weekday;
    while( 1 ) {
        puts("Input days and weekday:");
        scanf("%d %d", &days, &weekday);
        if( days < 1 || days > 31 || weekday < 1 || weekday > 7 ) { break; }
        puts("Mon\tTue\tWed\tThu\tFri\tSat\tSun");
        int i;
        for( i = 2 - weekday; i <= days; ++i ) {
            if( i < 1 ) {
                putchar('\t');
            } else {
                printf("%d\t", i);
                if( weekday == 7 ) {
                    weekday = 1;
                    putchar('\n');
                } else {
                    ++weekday;
                }
            }
        }
        putchar('\n');
    }
    return 0;
}

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

  1. Пример модифицированного кода календаря, который начинается с произвольного дня
  2. Ввод данных: день и день недели (1-7, где 1 - понедельник, 7 - воскресенье)
  3. Проверка введенных данных: если день или день недели некорректны (меньше 1 или больше 31), то выход из цикла
  4. Вывод календаря: таблица с днями недели и числами от 1 до N (где N - введенный день)
  5. Условие для вывода: если день недели больше 6 (суббота и воскресенье), то выводим новую строку
  6. Для числа 1 (понедельник): печатаем только одну табуляцию
  7. Для остальных чисел: печатаем число и табуляцию
  8. Условие для смены дня недели: если день недели равен 7 (воскресенье), то сбрасываем его в 1 (понедельник) и печатаем символ новой строки
  9. Если день недели меньше 7 (все дни кроме воскресенья): увеличиваем его на 1
  10. После вывода всех чисел и дней недели: печатаем символ новой строки
  11. Выход из программы: возвращаем 0

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


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

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

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