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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.133 из 5
Похожие ответы