Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
#define MAX 100
struct bible {
char kniga[50];
char avtor[50];
long kolichestvo;
char janr[50];
unsigned long int ID;
} bible_list[MAX];
void init_list(void), enter(void), Delete(void), list(void);
int menu_select(void), find_free(void), uchet(void);
int main(void)
{
setlocale(LC_ALL,"rus");
char choice;
init_list();
for(;;)
{choice=menu_select();
switch(choice)
{
case 1: enter(); break;
case 2: Delete(); break;
case 3: list(); break;
case 4: uchet(); break;
case 5: exit(0);
}
}
return 0;
}
void init_list(void)
{
register int t;
for(t=0;t<MAX;t++) bible_list[t].kniga[0]='\0';
}
int menu_select()
{
char s[80]="0";
int c;
printf("1. ƒобавить книгу в список\n2. ”далить книгу из списка\n3. ¬ывести список\n4. ”чЄт выдачи/приЄма книг\n5. выход\n");
do{
printf("¬ведите номер нужного пункта: ");
gets(s);
c=atoi(s);
}
while (c<1||c>5);
return c;
}
void enter(void)
{
printf("\n\n");
int slot;
char r[80];
slot=find_free();
if (slot==-1)
{
printf("\n—писок заполнен");
return;
}
printf("¬ведите название книги: ");
gets(bible_list[slot].kniga);
printf("¬ведите автора книги: ");
gets(bible_list[slot].avtor);
printf("¬ведите жанр книги: ");
gets(bible_list[slot].janr);
printf("¬ведите количество книг на складе: ");
gets(r);
bible_list[slot].kolichestvo=strtoul(r,'\0',10);
printf("¬ведите ID книги: ");
gets(r);
bible_list[slot].ID=strtoul(r,'\0',10);
printf("\n\n");
}
int find_free(void)
{
register int t;
for(t=0;bible_list[t].kniga[0]&&t<MAX;++t)
if (t==MAX) return -1;
return t;
}
void Delete(void)
{
printf("\n\n");
register int slot;
char s[80];
printf("¬ведите є записи: ");
gets(s);
slot=atoi(s);
if(slot>=0&&slot<MAX)
bible_list[slot].kniga[0]='\0';
printf("\n\n");
}
void list(void)
{
printf("\n");
register int t;
for(t=0;t<MAX;++t)
{
if(bible_list[t].kniga[0])
{
printf("%s\n", bible_list[t].kniga);
printf("%s\n", bible_list[t].avtor);
printf("%ld\n", bible_list[t].kolichestvo);
printf("%s\n", bible_list[t].janr);
printf("%lu\n", bible_list[t].ID);
printf("\n\n");
}
}
}
int uchet(void)
{
int a, t;
char s[50];
printf("1. ѕриЄм книги\n2. ¬ыдача книги\n");
printf("¬ведите номер нужного пункта: ");
scanf("%d",&a);
while(a<1||a>2)
{
printf("¬ведите номер нужного пункта: ");
scanf("%d", &a);
}
switch(a)
{
case 1:
{printf("¬ведите название книги: "); scanf("%s", s);
for(t=0;t<MAX;t++)
{if(strcmp(bible_list[t].kniga,s)==0)
{bible_list[t].kolichestvo++;}
}
break;}
case 2:
{printf("¬ведите название книги: "); scanf("%s", s);
for(t=0;t<MAX;t++)
{if(strcmp(bible_list[t].kniga,s)==0)
{bible_list[t].kolichestvo--;}
}
break;}
}
return 0;
}
при работе программы пишет два раза "¬ведите номер нужного пункта:" почему?