Распечатайте список сотрудников, фамилии которых начинаются с буквы В и их даты рождения - 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() для установки русской локали.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д