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

Ошибка ввода - C++

Восстановить пароль Регистрация
 
parkito
 Аватар для parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 685
30.07.2011, 16:53     Ошибка ввода #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
57
58
59
60
61
62
63
64
65
66
67
#include<iostream>
#include<windows.h>
#include<stdlib.h>
using namespace std;
class publications
{protected:
char b[100];
float c;
public:
    void fc()
    {cout<<"Введите название книги --> ";
    SetConsoleCP(1251);
    cin.get(b,100,'0');
    SetConsoleCP(866);
    cout<<"Введите цену --> ";
    cin>>c;}
    void fc1()
    {cout<<"Книга "<<b<<endl;
    cout<<"Цена "<<c<<endl;}
};
 
class book:public publications
{protected:
int str;
float min;
public:
void fc2()
{publications::fc();
cout<<"Введите кол-во страниц --> ";
cin>>str;
cout<<"Введите кол-во минут --> ";
cin>>min;
}
void fc3()
{publications::fc1();
cout<<"Страниц в книге - "<<str<<endl;
cout<<"Продолжительность диска - "<<min<<endl;}
 
};
int main ()
{setlocale(LC_ALL,"Rus");
book a1;
book* ptr[100];
int i=0;
char y;
bool t;
do
{ptr[i]->fc2();
i++;
cout<<"Ввести еще книгу ? (y/n) --> ";
cin>>y;
if(y=='y'||y=='Y')
    t=true;
else if(y=='n'||y=='N')
    t=false;
else 
    {cout<<"Ошибка";
cin.get();
cin.get();
exit(0);}
}while(t==true);
for(int i1=0;i1<i;i1++)
    ptr[i1]->fc3();
cin.get();
cin.get();
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.07.2011, 16:53     Ошибка ввода
Посмотрите здесь:

C++ Ошибка после ввода числа
C++ ошибка потокового ввода cin
C++ Ошибка после компиляции и ввода
Ошибка ввода в массив C++
Ошибка ввода C++
C++ Ошибка ввода
C++ Ошибка проверки ввода
Ошибка потока ввода C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
30.07.2011, 16:59     Ошибка ввода #2
Цитата Сообщение от parkito Посмотреть сообщение
После введения названия книги программа аварийно завершается. В чем проблема ?
Странно, должна падать сразу:
C++
1
ptr[i]->fc2();
вызов функции по неинициализированному указателю.
parkito
 Аватар для parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 685
30.07.2011, 17:08  [ТС]     Ошибка ввода #3
Тьфу.. точно. Строчку пропустил

C++
1
ptr[i]=new book;
Добавлено через 4 минуты
Но тогда поле введения информации про первую книгу. Сразу вызывается почему то бесконечный цикл. Почему ?

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
#include<iostream>
#include<windows.h>
#include<stdlib.h>
using namespace std;
class publications
{protected:
char b[100];
float c;
public:
    void fc()
    {cout<<"Введите название книги --> ";
    SetConsoleCP(1251);
    cin.get(b,100);
    SetConsoleCP(866);
    cout<<"Введите цену --> ";
    cin>>c;
    }
    void fc1()
    {cout<<"Книга "<<b<<endl;
    cout<<"Цена "<<c<<endl;}
};
 
class book:public publications
{protected:
int str;
float min;
public:
void fc2()
{publications::fc();
cout<<"Введите кол-во страниц --> ";
cin>>str;
cout<<"Введите кол-во минут --> ";
cin>>min;
}
void fc3()
{publications::fc1();
cout<<"Страниц в книге - "<<str<<endl;
cout<<"Продолжительность диска - "<<min<<endl;}
 
};
int main ()
{setlocale(LC_ALL,"Rus");
book a1;
book* ptr[100];
int i=0;
char y;
bool t;
do
{
    ptr[i]=new book;
    ptr[i]->fc2();
i++;
cout<<"Ввести еще книгу ? (y/n) --> ";
cin>>y;
if(y=='y'||y=='Y')
    t=true;
else if(y=='n'||y=='N')
    t=false;
else 
    {cout<<"Ошибка";
cin.get();
cin.get();
exit(0);}
}while(t==true);
for(int i1=0;i1<i;i1++)
    ptr[i1]->fc3();
cin.get();
cin.get();
return 0;
}Р
Yandex
Объявления
30.07.2011, 17:08     Ошибка ввода
Ответ Создать тему
Опции темы

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