Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
letoleto
0 / 0 / 0
Регистрация: 23.03.2013
Сообщений: 7
#1

книги в библиотеке - C++

16.01.2014, 17:44. Просмотров 572. Ответов 4
Метки нет (Все метки)

Задание:
Составить программу, которая содержит текущую информацию о книгах в библиотеке. Сведения о книгах содержат:
-номер УДК;
-фамилию и инициалы автора;
-название;
-год издания;
-количество экземпляров данной книги в библиотеке.
Программа должна обеспечивать:
-начальное формирование данных о всех книгах в библиотеке в виде списка;
-при взятии каждой книги вводится номер УДК, и программа уменьшает значение количества книг на единицу или выдает сообщение о том, что требуемой книги в библиотеке нет, или требуемая книга находится на руках;
-добавление данных о книгах, вновь поступающих в библиотеку;
-при возвращении каждой книги вводится номер УДК, и программа увеличивает значение количества книг на единицу;
-по запросу выдаются сведения о наличии книг в библиотеке.

Проблема в цикле, т.к. не совсем понимаю, как нужно прописывать. Например, здесь
C++
1
2
3
4
5
6
7
8
9
10
11
case '3'://Взять книгу
                int num1;
                printf("Введите номер УДК: ");
                scanf("%d", &num1);
                while (ebeg) {
                    if(ebeg->num == num1){
                        ebeg->kol=kol--;
                        printf("Осталось %d книг\n", kol);}
                    else printf("Такой книги нет в библиотеке, либо она на руках\n");}
                _getch();
                break;
Получается бесконечный цикл.
Помогите пожалуйста.
Код всей программы
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
#include <cstdio>
#include <conio.h>
#include <clocale>
#include <windows.h>
#include <stdio.h>
 
struct book {
    int num;  // номер УДК
    char avtor[30];  // фамилия и инициалы
    char name[40];  //название книги
    int year;  //год издания
    int kol;  //количество книг
    book *next;
};
 
book* first(int, char*, char*, int, int);
void dobav(book**, int, char*, char*, int, int);
void spisok(book*);
void nachalo();
 
book* first(int num, char *avtor, char *name, int year, int kol){
    book *enew = new book;
    enew->num = num;
    strcpy(enew->avtor, avtor);
    strcpy(enew->name, name);
    enew->year = year;
    enew->kol = kol;
    enew->next = 0;
    return enew;
}
 
void dobav(book **eend, int num, char *avtor, char *name, int year, int kol) {
    book *enew = new book;
    enew->num = num;
    strcpy(enew->avtor, avtor);
    strcpy(enew->name, name);
    enew->year = year;
    enew->kol = kol;
    enew->next = 0;
    (*eend)->next = enew;
    *eend = enew;
    return;
}
 
void viewAvialableList(book *ebeg) {
  }
 
void spisok(book *ebeg) {
    book *enew = ebeg;
    while(enew) {
        printf(" Номер УДК: %d\n", enew->num);
        printf(" Фамилия и инициалы автора  %s\n", enew->avtor);
        printf(" Название книги: %s\n", enew->name);
        printf(" Год издания: %d\n",enew->year);
        printf(" Количество экземпляров: %d\n\n", enew->kol);
        if(enew->next) printf("\n");
        enew = enew->next;
    }
    return;
}
 
void nachalo() {
    system("cls");
    printf("1. Добавить книгу.\n");
    printf("2. Вывод всех книг.\n");
    printf("3. Взять книгу.\n");
    printf("4. Вернуть книгу.\n");
    printf("5. Проверить наличие книги.\n\n");
    
    printf("0. Выход.\n");
    return;
}
 
 
int main()  
{  
    setlocale(LC_ALL, "Russian");
 
   
    bool exit = false;
    char c=0;
    book *ebeg=0, *eend=0;
    int  year=0, num=0, kol=0;
    char avtor[30] = {0},
        name[40] = {0};
    while(!exit) {
        nachalo();
        c = _getch();
        system("cls");
        switch(c) {
            case '1': // Добавить заявку
                printf("Номер УДК: ");
                scanf("%d", &num);
                printf("Фамилия и инициалы автора: ");
                scanf("%s",avtor);
                printf("Название книги: ");
                scanf("%s", name);
                printf("Год издания: ");
                scanf("%d", &year);
                printf("Количество экземпляров: ");
                scanf("%d", &kol);
                if(!ebeg) {
                    ebeg = first(num, avtor, name, year, kol);
                    eend = ebeg;
                } else
                    dobav(&eend, num, avtor, name, year, kol);
                printf("Книга добавлена!");
                fflush(stdin);
                _getch();
                break;
 
            case '2': // Вывод всего списка заявок
                if(ebeg)
                    spisok(ebeg);
                else
                    printf("Заявок нет!.\n");
                _getch();
                break;
 
                case '3'://Взять книгу
                int num1;
                printf("Введите номер УДК: ");
                scanf("%d", &num1);
                while (ebeg) {
                    if(ebeg->num == num1){
                        ebeg->kol=kol--;
                        printf("Осталось %d книг\n", kol);}
                    else printf("Такой книги нет в библиотеке, либо она на руках\n");}
                _getch();
                break;
 
                case '4'://Вернуть книгу
                int num2;
                printf("Введите номер УДК: ");
                scanf("%d", &num2);
                while (ebeg) {                  
                    if(ebeg->num == num2){
                        ebeg->kol=kol++;
                        printf("Осталось %d книг\n", kol);}
                else printf("Такой книги нет в библиотеке, либо она на руках\n");
                }
                _getch();
                break;
 
                case '5'://Проверка
                int num3;
                printf("Введите номер УДК: ");
                scanf("%d", &num3);
                while (ebeg) {
                    if((ebeg->num == num3) && (ebeg->kol != 0)){
                        
                        printf("Книга в наличии\n");}
                    else{ printf("Книги нет в наличии\n");}
                    }
                _getch();
                break;
            
                case '0':
                exit = true;
                break;
            default:
                break;
        }
    }
    getch();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2014, 17:44     книги в библиотеке
Посмотрите здесь:

Бинарное дерево. книги в библиотеке - C++
Составить программу, которая содержит текущую информацию о книгах в библиотеке. Сведения о книгах содержат: • номер УДК; • фамилию и...

Массив структур: книги, хранящиеся в библиотеке - C++
8. Для книг, хранящихся в библиотеке, задаются регистрационный номер книги, автор, название, год издания, издательство, количество страниц....

Изменение суперкласса в библиотеке - C++
Добрый день! В некой данной мне извне библиотеке (исходники доступны) был суперкласс с тремя полями: class Coords { public: ...

Осуществление поиска по библиотеке - C++
Добрый вечер! Продолжаю изучать C++, продолжают появляться новые задачки. И так, скажем у меня есть некое абстрактное дерево, на этом...

Что не так в статической библиотеке - C++
Создание статической библиотеки : Посмотрите пожалуйста ,что у меня не правильно в файле MyExecRefsLib.cpp: подчеркивает MyClass c; и пишет...

шаблонный метод в статической библиотеке - C++
подскажите, имеется след. архитектура кода: myclass.h class myclass { public: template&lt;class T&gt; void...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ev_Hyper
Заблокирован
16.01.2014, 17:59     книги в библиотеке #2
Цитата Сообщение от letoleto Посмотреть сообщение
Получается бесконечный цикл.
А вот так сделать нельзя?
C++
1
2
3
4
5
                while (ebeg) {
                    if(ebeg->num == num1){
                        ebeg->kol=kol--;
                        printf("Осталось %d книг\n", kol);}
                    else printf("Такой книги нет в библиотеке, либо она на руках\n");break;}
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.01.2014, 18:14     книги в библиотеке #3
Цитата Сообщение от letoleto Посмотреть сообщение
Получается бесконечный цикл.
Выход по ebeg, а он в цикле не меняется.
letoleto
0 / 0 / 0
Регистрация: 23.03.2013
Сообщений: 7
16.01.2014, 18:52  [ТС]     книги в библиотеке #4
Пробовала с break, но тогда он сравнивает только номер первой книги и выходит из цикла.

Добавлено через 43 секунды
Цитата Сообщение от alsav22 Посмотреть сообщение
Выход по ebeg, а он в цикле не меняется.
Как быть?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.01.2014, 19:34     книги в библиотеке
Еще ссылки по теме:

Беда с конструктором в статической библиотеке - C++
Teplitsa.h class Teplitsa { private: double temp; public: Teplitsa(double a);

Ошибка в стандартной библиотеке шланга? - C++
Обнаружил интересную вещь: std::sort из стандартной библиотеки компилятора clang сортирует неправильно. Код, на котором это происходит,...

Какой аналог в С++ библиотеке dlfcn.h - C++
Добрый день, есть ли что-то подобное сишной dlfcn.h для с++, библиотека, похоже, не совместима с плюсами.

Описать информацию о книгах в библиотеке - C++
В общем задача такая: Составить программу, которая содержит текущую информацию о книгах в библиотеке.Сведения о книгах заключают: 1)...

double функции в библиотеке math.h - C++
Коллеги, помогите, пожалуйста, разобраться в следующей проблеме. См. прикрепленный файл. Почему функции из библиотеки math.h не...

Ошибка в библиотеке std o_O - C++
\program files\visual studio 2008\vc\include\string(14) : error C2143: синтаксическая ошибка: отсутствие &quot;;&quot; перед &quot;namespace&quot; С чем...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.01.2014, 19:34     книги в библиотеке #5
Цитата Сообщение от letoleto Посмотреть сообщение
Как быть?
Посмотрите, как сделан просмотр списка при выводе (spisok()).
Yandex
Объявления
16.01.2014, 19:34     книги в библиотеке
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru