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

Почему программа себя странно ведет: зацикливается после ввода значений? - C++

Восстановить пароль Регистрация
 
Sevenex
0 / 0 / 0
Регистрация: 05.05.2014
Сообщений: 7
16.05.2014, 01:18     Почему программа себя странно ведет: зацикливается после ввода значений? #1
Зацикливается после воода значений. Подскажите пожалуйста в чем может быть проблема.

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
#include <fstream>
#include <iostream>
#include "Library.h"
using namespace std;
 
void addbook()
{
    book one;
    cout<<"\nPlease enter book's name: ";
    cin.getline(one.name,30);
    getchar();
    cout<<"\nPlease enter book's author: ";
    cin.getline(one.author,40);
    getchar();
    cout<<"\nPlease enter book's genre: ";
    cin.getline(one.genre,20);
    getchar();
    cout<<"\nPlease enter book's year: ";
    cin>>one.year;
    cout<<"\nPlease enter book's authentication number: ";
    cin>>one.code;
    ofstream lib ("library.book",ios::app  | ios::binary);//открытие файла для записи в бинарном режиме, все операции будут помещены в конец файла.
    lib.write((char*)&one,sizeof (book));// посимвольная запись в файл, (char*)&one -> получение адреса, откуда начинаем писать
    cout<<"New data have been added\n";
    lib.close();
}
void findbook()
{
    ifstream two("library.book",ios::binary);
    if(!two)
    {
        cout<< "Error."<<endl;
        system("PAUSE");
    }
    else
    {
        two.seekg(0,ios::end);//указатель в конец
        int size=two.tellg();//tellg используем, чтобы получить позицию указателя, после того, как переставили его в конец.
        size=size/sizeof(book);
        book*one=new book[size];
        two.seekg(0,ios::beg);
        two.read((char *)one, sizeof(book)*size);
        char find[30];
        cout<<"\n[SEARCH]\nEnter book: ";
        cin.getline(find,30);
        getchar();
        for(int i=0;i<size;i++)
        {
            if(strcmp(one[i].name, find))
                cout<<"Search progress: "<<i+1<<size<<"[NOT FOUND]"<<endl;
            else cout<<"Book with name "<<one[i].name<< "[FOUND]!"<<endl;
        }
        cout<<endl<<endl;
        two.close();
    }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
uhx
 Аватар для uhx
56 / 56 / 6
Регистрация: 11.07.2013
Сообщений: 300
16.05.2014, 01:35     Почему программа себя странно ведет: зацикливается после ввода значений? #2
Цитата Сообщение от Sevenex Посмотреть сообщение
Зацикливается после воода значений. Подскажите пожалуйста в чем может быть проблема.
А можете конкретно сказать, в какой из функций?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.05.2014, 01:42     Почему программа себя странно ведет: зацикливается после ввода значений? #3
main() покажите. И зачем, после getline(), getchar() ?
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
16.05.2014, 01:43     Почему программа себя странно ведет: зацикливается после ввода значений? #4
Sevenex, весь код в студию.
Sevenex
0 / 0 / 0
Регистрация: 05.05.2014
Сообщений: 7
16.05.2014, 02:40  [ТС]     Почему программа себя странно ведет: зацикливается после ввода значений? #5
Вот main


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
#include <iostream>
#include "Library.h"
using namespace std;
int main()
{
    int choise;
    do
    {
        system("cls");
        cout<< ">>>MENU<<<"<< endl;
        cout<< "Welcome to the Virtual Library\n Please choose the option and enter it's number!"<< endl;
        cout<< "[1] Add a new book."<<endl;
        cout<< "[2] Add a new user."<<endl;
        cout<< "[3] View data."<<endl;
        cout<< "[4] Exclude a book from user."<<endl;
        cout<< "[5] Find book."<<endl;
        cout<< "[6] Sort books by author."<<endl;
        cout<< "[7] Exit."<<endl;
 
        cout<<"Please enter your choise from [1] to [7] : ";
        cin>> choise;
 
        switch(choise)
        {
        case 1: system("cls");addbook(); break;
        case 2: system("cls");findbook(); break;
        case 3: system("cls");break;
        case 4: system("cls");break;
        case 5: system("cls");break;
        case 6: system("cls");break;
        case 7: cout<<"See you soon! ;)"<<endl; break;system("PAUSE");return 0;
        default: cout<<" Can't find such a choise. ;("<<endl; system("PAUSE"); return 0;
        }
    }
    while (choise!=7);
 
 
        system("PAUSE");
        return 0;
    }
 
[size="1"][color="grey"][I]Добавлено через 21 секунду[/I][/color][/size]
Вот library.h
 
struct book
{
    char name[30];
    char author[40];
    int year;
    int code;
    char genre[20];
};
void addbook();
void showbook();
void findbook();
void sortbook();
uhx
 Аватар для uhx
56 / 56 / 6
Регистрация: 11.07.2013
Сообщений: 300
16.05.2014, 03:02     Почему программа себя странно ведет: зацикливается после ввода значений? #6
У вас же цикл
C++
1
2
3
do{
...
while(choise!=7);
Не? Вот и зацикливается
Или напишите, где конкретно проблема. В какой-то функции, или что. Больше информации.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.05.2014, 04:01     Почему программа себя странно ведет: зацикливается после ввода значений? #7
C++
1
(cin >> choise).get();
???
Цитата Сообщение от alsav22 Посмотреть сообщение
И зачем, после getline(), getchar() ?
Sevenex
0 / 0 / 0
Регистрация: 05.05.2014
Сообщений: 7
16.05.2014, 14:51  [ТС]     Почему программа себя странно ведет: зацикливается после ввода значений? #8
(cin >>choise).get(); помогло большое спасибо.
поисковик только криво очень работает.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.05.2014, 20:47     Почему программа себя странно ведет: зацикливается после ввода значений?
Еще ссылки по теме:

C++ Почему зацикливается программа?
Программа зацикливается. Почему? C++
C++ Почему после ввода переменной программа закрывается?

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.05.2014, 20:47     Почему программа себя странно ведет: зацикливается после ввода значений? #9
???
Цитата Сообщение от alsav22 Посмотреть сообщение
И зачем, после getline(), getchar() ?
Yandex
Объявления
16.05.2014, 20:47     Почему программа себя странно ведет: зацикливается после ввода значений?
Ответ Создать тему
Опции темы

Текущее время: 19:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru