Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Retroman
0 / 0 / 1
Регистрация: 27.01.2015
Сообщений: 36
1

Ввести структуру "историческое событие" с полями "число", "месяц", "год", "событие"

17.03.2015, 19:14. Просмотров 906. Ответов 8
Метки нет (Все метки)

Ввести структуру ИСТОРИЧЕСКОЕ СОБЫТИЕ с полями ЧИСЛО, МЕСЯЦ, ГОД, СОБЫТИЕ. Составить и протестировать функции
a. ввода исторического события (ввода нескольких событий в массив структур);
b. вывода на экран списка исторических событий;
c. вычисляющую интервал в днях, прошедший между двумя заданными историческими событиями (не учитывая високосные года, полагая год по 365 дней

Возникли проблемы с каждым из пунктов
a. пропускает пункт ввода событий
b. некорректный вывод даты
c. не учитывает введенные события вообще
Прошу помочь.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#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;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.03.2015, 19:14
Ответы с готовыми решениями:

Ввести структуру "Алгебраический полином" с полями "степень", "коэффициенты"
Ребят,вот само задание : Ввести структуру АЛГЕБРАИЧЕСКИЙ ПОЛИНОМ с полями СТЕПЕНЬ, КОЭФФИЦИЕНТЫ....

Создать запись "Двигатель", которая содержит элементы "Название", "Мощность", "Скорость", "Цена"
Создать запись &quot;Двигатель&quot;, которая содержит элементы &quot;Название&quot;, &quot;Мощность&quot;, &quot;Скорость&quot;,...

Подсчитать общее количество вхождений в строку символов "А", "a", "B" и "b"
#include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &lt;conio.h&gt; main() { int i; int k; ...

"Перевернуть" в строке все слова (Например: "Жили были" в "илиЖ илыб")
&quot;Перевернуть&quot; в строке все слова. (Например: &quot;Жили были дед и баба&quot; - &quot;илиЖ илиб дед и абаб&quot;)

Подсчитать количество сдвоенных символов "сс", "нн", "лл" в тексте, расположенном в текстовом файле
Пожалуйста) Подсчитать количество сдвоенных символов сс, нн, лл в тексте, расположенном в текстовом...

8
ValeryS
Модератор
7523 / 5700 / 736
Регистрация: 14.02.2011
Сообщений: 19,505
Завершенные тесты: 1
17.03.2015, 19:17 2
Цитата Сообщение от Retroman Посмотреть сообщение
int year[40];
тебе точно нужен массив из 40 целых чисел???
судя по этому
Цитата Сообщение от Retroman Посмотреть сообщение
date_list[t].year[0] = '\0';
тебе нужен
C
1
char year[40];
0
Retroman
0 / 0 / 1
Регистрация: 27.01.2015
Сообщений: 36
17.03.2015, 19:21  [ТС] 3
Мне реально может понадобится только 5 чисел
0
ValeryS
Модератор
7523 / 5700 / 736
Регистрация: 14.02.2011
Сообщений: 19,505
Завершенные тесты: 1
17.03.2015, 19:24 4
Цитата Сообщение от Retroman Посмотреть сообщение
Мне реально может понадобится только 5 чисел
чисел или цифр?
0
17.03.2015, 19:24
Retroman
0 / 0 / 1
Регистрация: 27.01.2015
Сообщений: 36
17.03.2015, 19:31  [ТС] 5
чисел
0
ValeryS
Модератор
7523 / 5700 / 736
Регистрация: 14.02.2011
Сообщений: 19,505
Завершенные тесты: 1
17.03.2015, 19:32 6
как ты год загонишь в пять чисел?
0
Retroman
0 / 0 / 1
Регистрация: 27.01.2015
Сообщений: 36
17.03.2015, 19:38  [ТС] 7
Вот сейчас ничего не понял
0
ValeryS
Модератор
7523 / 5700 / 736
Регистрация: 14.02.2011
Сообщений: 19,505
Завершенные тесты: 1
17.03.2015, 19:44 8
Цитата Сообщение от Retroman Посмотреть сообщение
Вот сейчас ничего не понял
вот здесь
Цитата Сообщение от Retroman Посмотреть сообщение
int year[40];
ты создаешь массив из 40 int, зачем
год это одно число например 2015 достаточно одного int
или символьный массив чтобы вводить как текст
C
1
char year[40];
0
Alexandr_1982
180 / 81 / 30
Регистрация: 04.11.2013
Сообщений: 413
Записей в блоге: 4
18.03.2015, 06:34 9
Выложил свою попытку в соседней теме: Структура "Историческое событие". Найти интервал между двумя событиями в днях

1. Зачем вы в структуре объявляете массивы, если день, месяц и год это числа, а строки хранятся в массиве типа char (если задание дня, месяца,,года строковое)?
C
1
2
3
4
5
struct date
{
       int year[40];
       int month[12];
       int day[30];
2. В современных компиляторах ключевое слово register обычно не требуется, так как компилятор сам помещает в регистры при оптимизации кода на ассемблере (сперва C код преобразуется в ассемблерный, затем в машинный). А вот лет 40 назад, когда памяти было мало, требовалось указывать, что нужно переменную поместить в регистр.
0
18.03.2015, 06:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.03.2015, 06:34

Функция замены ":" на "_" в названии файла и ошибка "undefined reference to 'strcat'"
Добрый день,прошу помочь мне с такой проблемой: В общем есть функция,работающая с именем...

В строке заменить последовательность слов "один", "два", "три"
Помогите,плз) В строке заменить последовательность слов &quot;один&quot;, &quot;два&quot;, &quot;три&quot; на &quot;1-2-3&quot;

Структура "Хоккеист" и файлы с двумя командами: "Динамо" и "Спартак"
Создать 2 файла, содержащего сведения об игроках хоккейных команд &quot;Динамо&quot; и &quot;Спартак&quot;. Структура...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru