Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2015, 00:02   #1
Valionos
 
Регистрация: 24.12.2015
Сообщений: 7
По умолчанию помогите найти ошибку в проге, язык С

Код:
#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;
}
при работе программы пишет два раза "¬ведите номер нужного пункта:" почему?
Valionos вне форума Ответить с цитированием
Старый 26.12.2015, 00:07   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Может быть, оно само сломалося?

129.jpg
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите найти ошибку (язык С) dannae Помощь студентам 0 04.10.2013 10:00
найти ошибку в проге на Delphi Serjik-ahaha Помощь студентам 15 03.07.2011 13:11
Найти ошибку в проге с массивами bingooo Паскаль, Turbo Pascal, PascalABC.NET 6 10.04.2010 09:30
Помогите пожалуйста найти ошибку в проге barbossa Общие вопросы C/C++ 6 01.06.2009 21:33