Распечатайте список сотрудников, фамилии которых начинаются с буквы В и их даты рождения - C (СИ)
Формулировка задачи:
Помогите пожалуйста, программа не работает. Не могу понять в чём дело.
#include <stdio.h>
#include <conio.h>
#include <locale.h>
struct sotrudniki
{
char name[20];
char fam[20];
char god[20];
char obrazovanie[20];
char otdel[20];
int zp[20];
} kn[20];
void main()
{
setlocale(LC_ALL, "Rus");
int men, k = 0;
do
{
printf("1.Создать \n");
printf("2.Просмотр \n");
printf("0.Выход \n");
scanf_s("%d", &men);
switch (men) {
case 1:
k++;
printf("Введите имя %d: ", k);
scanf_s("%s", kn[k].name);
printf("Введите фамилию %d: ", k);
scanf_s("%s", kn[k].fam);
printf("Введите год рождения %d: ", k);
scanf_s("%s", kn[k].god);
printf("Введите образование %d: ", k);
scanf_s("%s", kn[k].obrazovanie);
printf("Введите отдел %d: ", k);
scanf_s("%s", kn[k].otdel);
printf("Введите з/п %d: ", k);
scanf_s("%d", kn[k].zp);
break;
case 2:
for (int i = 0;i<k;i++)
{
if (kn[k].fam[1] = 'В')
printf("\n %s \n %s \n %s", kn[i].name, kn[i].fam, kn[i].god);
}
break;
case 0: break;
default: printf("Выберите пункт меню\n");
break;
}
}
while (men != 0);
}Решение задачи: «Распечатайте список сотрудников, фамилии которых начинаются с буквы В и их даты рождения»
textual
Листинг программы
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <string>
struct sotrudniki
{
char name[20];
char fam[20];
int god;
char obrazovanie[20];
char otdel[20];
int zp;
} kn[20];
void main()
{
setlocale(LC_ALL, "Rus");
int men, k=0;
do
{
printf("1.Создать \n");
printf("2.Просмотр \n");
printf("0.Выход \n");
scanf("%d", &men);
switch (men)
{
case 1:
k++;
printf("Введите имя %d: ", k);
scanf("%s", kn[k].name);
printf("Введите фамилию %d: ", k);
scanf("%s", kn[k].fam);
printf("Введите год рождения %d: ", k);
scanf("%d", &kn[k].god);
printf("Введите образование %d: ", k);
scanf("%s", kn[k].obrazovanie);
printf("Введите отдел %d: ", k);
scanf("%s", kn[k].otdel);
printf("Введите з/п %d: ", k);
scanf("%d", &kn[k].zp);
break;
case 2:
for (int i=1;i<=k;i++)
{
if(kn[i].fam[0]=='B')
printf("\n %s \n %s \n %d\n", kn[i].name, kn[i].fam, kn[i].god);
}
break;
case 0: break;
default: printf("Выберите пункт меню\n");
break;
}
}
while (men != 0);
}
Объяснение кода листинга программы
В этом коде определен массив структур sotrudniki (сотрудники) на 20 элементов. Каждый элемент содержит поля: имя (name), фамилия (fam), год рождения (god), образование (obrazovanie), отдел (otdel), зарплата (zp).
В функции main() определен цикл do-while, который выполняется до тех пор, пока пользователь не введет 0 (выход).
При вводе 1 создается новый сотрудник, и пользователю предлагается ввести данные для этого сотрудника.
При вводе 2 выводятся данные всех сотрудников, чьи фамилии начинаются с буквы B.
В случае ввода 0 или Выберите пункт меню цикл прекращается.
В конце программы используется функция setlocale() для установки русской локали.