Подсчет дней в году(структура) - выход из цикла while - C (СИ)

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

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

Добрый день!Спустя небольшое время решил возобновить изучение СИ,остановился на структурах. Задание такое:задать дату,и программа должна подсчитать количество дней(учитывая високосность).все работает,программа считает,но для задание даты я воспользовался таким форматом для scanf,но не получается грамотно выйти из цикла while при неверном наборе(если введу букву по ошибке или намеренно).Подскажите,как можно это исправить?заодно,посоветуйте,что можно изменить.Спасибо
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int check(int,int,int);
struct month{
int num_Mon;
char name_MNTH[10];
char ABR[4];
int days;
};
    struct month MONTHS[12] = {
    {1,"January","JAN",31},
    {2,"February","FEB",28},
    {3,"March","MAR",31},
    {4,"April","APR",30},
    {5,"May","MAY",31},
    {6,"June","JUN",30},
    {7,"July","JUL",31},
    {8,"August","AUG",31},
    {9,"September","SEP",30},
    {10,"October","OCT",31},
    {11,"November","NOV",30},
    {12,"December","DEC",31},
};
int main(void)
{
    int input_day;
    int input_mon;
    int input_yar;
    int index;
    int total;
    int days_amount;
    printf("enter date for calculate(for example 01/12/1999):\n");
    while (scanf("%2d%*c%2d%*c%4d",&input_day,&input_mon,&input_yar) != 1)
    {
        if (input_yar % 4 == 0 )
            MONTHS[1].days = 29;
        else
            MONTHS[1].days = 28;
        days_amount = check(input_day,input_mon,input_yar);
                 printf("sum until %s - %d\n",MONTHS[input_mon - 1].name_MNTH,days_amount);
    }
return 0;
}
 
int check(int D,int M,int Y)
{
    int index;
    int total_mid = 0;
    int total;
    for (index =1;index < M;index++)
        total_mid+=MONTHS[index-1].days;
 
        total= total_mid+D;

            return total;
}

Решение задачи: «Подсчет дней в году(структура) - выход из цикла while»

textual
Листинг программы
while (scanf("%2d%*c%2d%*c%4d",&input_day,&input_mon,&input_yar) == 3)

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


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

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

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