-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain
More file actions
141 lines (130 loc) · 4.03 KB
/
Copy pathmain
File metadata and controls
141 lines (130 loc) · 4.03 KB
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
136
137
#include <stdio.h>
/*Имеется список учета нуждающихся в улучшении жилищных условий.
Каждая запись этого списка содержит фамилию, имя, отчество и дату постановки на учет.
Список упорядочен по дате постановки на учет. Известно число квартир, выделяемых по данному
списку в течение года. Рассчитать, какое количество лет в среднем необходимо ожидать получения квартиры,
и вывести на экран весь список с указанием ожидаемого года получения квартиры.*/
struct fio
{
char surname[15];
char name[15];
char patronymic[15];
};
struct nuzhd
{
struct fio inf;
int yearpost;
int zhdyears;
int yearpol;
};
struct nuzhd spisok[20];
int kol;
int main(int argc, char* argv[])
{
printf("Лабораторная работа №7\nВыполнил студент гр.107512 Кохович М.С.\n");
int a;
int zagod;
int yearnow;
printf("Введите колличество квартир сдаваемых за год: ");
scanf("%d",&zagod);
int i,j;
kol = 0;
char ent;
while(a)
{
int sredn = 0;
yearnow = 2013;
printf("Введите 1, если хотите добавить запись в список, введите 2 для получения\nинформации по кравтирам, введите 0 для выхода из программы:");
scanf("%d",&a);
scanf("%c",&ent);
switch(a)
{
case 0:
{
return 0;
break;
}
case 1:
{
inp(kol);
scanf("%c",&ent);
break;
}
case 2:
{
sort();
i = 0;
int g = 0;
while (i < kol)
{
for(j = 0; j < zagod && i < kol; j++,i++)
{
spisok[i].yearpol = yearnow + g;
spisok[i].zhdyears = spisok[i].yearpol - spisok[i].yearpost;
sredn += spisok[i].zhdyears;
}
g++;
}
sredn = sredn / kol;
for (i = 0; i < kol; i++)
{
outp(i);
}
printf("-----------------------------------\n");
printf("Среднее время ожидания квартиры: %d лет(года).\n",sredn);
break;
}
}
}
return 0;
}
int inp(int index)
{
printf("Введите фамилию: ");
gets(spisok[index].inf.surname);
printf("Введите имя: ");
gets(spisok[index].inf.name);
printf("Введите отчество: ");
gets(spisok[index].inf.patronymic);
printf("Введите год постановки на учет: ");
scanf("%d",&spisok[index].yearpost);
kol++;
return 0;
}
int outp(int index)
{
printf("------------------------\n");
printf("Фамилия: %s\n",spisok[index].inf.surname);
printf("Имя: %s\n", spisok[index].inf.name);
printf("Отчество: %s\n",spisok[index].inf.patronymic);
printf("Поставлен на учет: %d г.\n", spisok[index].yearpost);
printf("Получит квартиру: %d\n", spisok[index].yearpol);
return 0;
}
int sort(void)
{
int i;
int exchange;
int a,b;
struct nuzhd buff;
for (i = 0; i < kol - 1; i++)
{
exchange = 0;
a = i;
for(b = a+1; b < kol; b++)
{
if(spisok[b].yearpost < spisok[a].yearpost)
{
buff = spisok[b];
a = b;
exchange++;
}
}
if (exchange)
{
spisok[a] = spisok[i];
spisok[i] = buff;
}
}
return 0;
}