Ввести структуру "историческое событие" с полями "число", "месяц", "год", "событие" - 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];
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д