Нужна помощь вот задание:1 и 2 пункты сделал не могу разобраться с 3 и 4 пунктами (
Программа должна иметь следующее меню:
1.Вывод списка сотрудников
2.Редактирование
Добавление сотрудника
Удаление сотрудника
3.Запросы
Вывести данные о сотруднике с заданной фамилией
Вывести всех сотрудников, у которых день рождения в заданном месяце
4.Статистика
Общее количество сотрудников
Количество сотрудников в каждой должности
Количество молодых специалистов (до 35 лет)
[color=black]#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <iostream>
#define MAX 100
struct addr {
char name[30];
char fam[40];
char otch[20];
char dolg[10];
char dat[10];
char mes [15];
char god [4];
unsigned long int zip;
} addr_list[MAX];
void init_list(void), enter(void);
void remove(void), list(void);
int menu_select(void), find_free(void);
int main(void)
{
setlocale(LC_ALL,"RUS");
char choice;
init_list(); /* инициализация массива структур */
for(;;) {
choice = menu_select();
switch(choice) {
case 1: enter();
break;
case 2: remove ();
break;
case 3: list();
break;
case 4: exit(0);
break;
}
}
return 0;
}
/* Инициализация списка. */
void init_list(void)
{ int t;
for(t=0; t<MAX; ++t) addr_list[t].name[0] = '\0';
}
/* Получения значения, выбранного меню. */
int menu_select(void)
{
char s[80];
int c;
printf("1. Введите имя\n");
printf("2. Удалите имя\n");
printf("3. Выведите список\n");
printf("4. Выход\n");
do {
printf("\nВведите номер нужного пункта: ");
gets(s);
c = atoi(s);
} while(c<0 || c>4);
return c;
}
/* Ввод адреса в список. */
void enter(void)
{
int slot;
char s[80];
slot = find_free();
if(slot==-1) {
printf("\nСписок заполнен");
return;
}
printf("Введите имя: ");
gets(addr_list[slot].name);
printf("Введите фамилию: ");
gets(addr_list[slot].fam);
printf("Введите отчество: ");
gets(addr_list[slot].otch);
printf("Введите должность: ");
gets(addr_list[slot].dolg);
printf("Дата рождения: ");
gets(addr_list[slot].dat);
printf("Месяц рождения: ");
gets(addr_list[slot].mes);
printf("Год рождения: ");
gets(addr_list[slot].god);
}
/* Поиск свободной структуры. */
int find_free(void)
{
int t;
for(t=0; addr_list[t].name[0] && t<MAX; ++t) ;
if(t==MAX) return -1; /* свободных структур нет */
return t;
}
/* Удаление адреса. */
void remove(void)
{
int slot;
char s[80];
printf("Введите № записи: ");
gets(s);
slot = atoi(s);
if(slot>=0 && slot < MAX)
addr_list[slot].name[0] = '\0';
}
/* Вывод списка на экран. */
void list(void)
{
int t;
for(t=0; t<MAX; ++t) {
if(addr_list[t].name[0]) {
printf(" Имя: %s\n", addr_list[t].name);
printf(" Фамилия: %s\n " , addr_list[t].fam);
printf("Отчество: %s\n " , addr_list[t].otch);
printf("Должность: %s\n ", addr_list[t].dolg);
printf("Дата рождения: %s\n ", addr_list[t].dat);
printf("Месяц рождения: %s\n ", addr_list[t].mes);
printf("Год рождения: %s\n ", addr_list[t].god);
}
}
printf("\n\n");
}[/color]