Ввести структуру "историческое событие" с полями "число", "месяц", "год", "событие" - C (СИ)

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

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

Ввести структуру ИСТОРИЧЕСКОЕ СОБЫТИЕ с полями ЧИСЛО, МЕСЯЦ, ГОД, СОБЫТИЕ. Составить и протестировать функции a. ввода исторического события (ввода нескольких событий в массив структур); b. вывода на экран списка исторических событий; c. вычисляющую интервал в днях, прошедший между двумя заданными историческими событиями (не учитывая високосные года, полагая год по 365 дней Возникли проблемы с каждым из пунктов a. пропускает пункт ввода событий b. некорректный вывод даты c. не учитывает введенные события вообще Прошу помочь.
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#include<locale>
 
#define MAX 5
 
struct date
{
       int year[40];
       int month[12];
       int day[30];
       char sob[40];
}date_list[MAX]; 
 
void init_list(void)//инициализация структуры
{
register int t;
 
for(t=0; t<MAX; ++t) 
{
date_list[t].year[0] = '\0';
date_list[t].month[0] = '\0';
date_list[t].day[0] = '\0';
date_list[t].sob[0] = '\0';
}
}
 
int find_free()
{
int t;
for(t=0;(date_list[t].year[0])&&(t<MAX);t++)
if (t==MAX) return -1;
return t;
}

void enter(void)
{
int slot,n=0;
slot=find_free();
if(slot==-1)
{
printf("Список заполнен");
return;
}
    printf("Год:");
    scanf("%d",&date_list[slot].year);
    printf("Месяц:");
    scanf("%d",&date_list[slot].month);
    printf("День:");
    scanf("%d",&date_list[slot].day);
    printf("Событие:");
    gets(date_list[slot].sob);
    n=n+1;
}
 
 void list()
{
int t;
for(t=0;t<MAX;t++)
if (date_list[t].year[0])
{
printf("%d\n",date_list[t].year);
printf("%d\n",date_list[t].month);
printf("%d\n",date_list[t].day);
printf("%s\n",date_list[t].sob);
printf("\n\n");
}}
 
void interval()
{
const int N=5;
date mas[N];
int n=0;
printf("\nвведено %d событий\n",n);
for (int i=0; i<n; i++)
{
printf("\n",mas[i].year);
printf(" - ",mas[i].sob);
}
getch;
}

int main_menu(void)
{
    char nom[80];
    int c;
    setlocale(LC_ALL, "Russian");
    printf("--------------------------------------------");
    printf("\nЗдравствуйте!\n");
    printf("Выберите функцию из меню:\n");
    printf("--------------------------------------------");
    printf("\n 1 - Ввод исторического события\n");
    printf(" 2 - Вывод исторического события\n");
    printf(" 3 - Интервал между датами\n");
    printf(" 4 - Выход из программы\n");
    printf("--------------------------------------------");
    do 
    {
    printf("\nПожалуйста, введите номер нужного пункта: ");
    gets(nom);
    c = atoi(nom);
    } 
    while(c<0 || c>4);
    return c;
    }

int main(void)
{
date d;
setlocale(LC_ALL,"Russian");
char choice;
for(;;) 
{
choice = main_menu();
switch(choice) 
{
case 1: enter();getch;
break;
case 2: list();getch;
break;
case 3: interval();break;
case 4: printf("_____________________________________________________________");
        printf("\nДо свидания!\n");
        system("pause");
        exit(0);
}
}
return 0;
}

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

textual
Листинг программы
struct date
{
       int year[40];
       int month[12];
       int day[30];

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


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

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

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