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

Непонятка с наследованием классов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Уравнение http://www.cyberforum.ru/cpp-beginners/thread743454.html
Решить уравнение : t=((2cos(x-пи/6))/(0.5+sin2y))((1+(z2)/(3-z2/5)) при x=14.26 , y=-1.22 , z=3.5x10-2 , t=0.564849 Добавлено через 1 минуту z=3.5x10-2 -2 в степене стоит
C++ Некорректная запись структуры в файл Добрый вечер всем! Следующая проблема: некорректно заполняется файл из структуры. class questions : public test, public testsystem { public: string question; string kind_of_answer; ... http://www.cyberforum.ru/cpp-beginners/thread743453.html
C++ Сформировать два текстовых файла из целых чисел. Записать в третий файл минимальный элемент первого файла и максимальный элемент второго файла
Тема: работа с текстовыми файлами с использованием стандартных функций библиотеки stdio.h Нужно составить программу: Сформировать два текстовых файла из целых чисел. Записать в третий файл...
C++ Пожалуйста проверьте ошибки в программе
#include <stdio.h> #include <conio.h> #include <iostream.h> using namespace std; const nMax=100; // Главная программа: void main() { int z; // исходный массив:
C++ Создать программу со связью к текстовому файлу http://www.cyberforum.ru/cpp-beginners/thread743432.html
Написать программу при вводе в которой числа или слова , создавался текстовый файл(.txt) в котором отображалось бы то же самое что вводилось в самой программе.
C++ Для заданного x найти наименьшее k такое, что m(k) ≤ x ≤ m(k+1) Задание: Элементы массива M(n) упорядочены по неубыванию. Для заданного x найти наименьшее k такое, что mk ≤ x ≤ mk+1, либо показать (выдать сообщение), что такого нет. Ребят, помогите решить вот... подробнее

Показать сообщение отдельно
fuzzytoozy
8 / 8 / 1
Регистрация: 23.11.2012
Сообщений: 94

Непонятка с наследованием классов - C++

23.12.2012, 18:44. Просмотров 203. Ответов 0
Метки (Все метки)

Здравствуйте товарищи! Проблема следующего рода. В программе я создал 4 класса: 2 базовых и 2 производных.
Объект производного класса b с методами работает замечательно, но когда функции b.getdata(); и b.putdata(); заканчивают свою работу, заканчивает свою работу и программа. Вызов функций класса Type объектом Type t не происходит: t.getdata(); t.putdata();. Когда же между вызовами этих функций вставить строку system("PAUSE"); то после этой самой паузы начинают работать методы класса Type. Вот так работает:
C++
1
2
3
4
5
 b.getdata();
 b.putdata();
 system("PAUSE");
 t.getdata();
 t.putdata();
Вот так не работает:
C++
1
2
3
4
 b.getdata();
 b.putdata();
 t.getdata();
 t.putdata();
код всей программы полностью:
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
#include <iostream>
#include <stdio.h>
using namespace std;
////////////////////////////
class publication
{
 protected:
  enum { MAX = 80 };
  char name[MAX];
  float price;
 public:
  void getdata ( )
  {
   cout << "Enter book name: ";
   cin.get( name, 80 );
   cout << "Enter book price: ";
   cin >> price;
  }
 
  void putdata ( )
  {
   cout << "\n\nBook's name: ";
   printf( name, "%s" ); cout << endl;
   cout << "Book's price: ";
   cout << price << endl;
  }
};
 
class sales
{
 protected:
  enum { SZ = 3 };
  float sales[SZ];
 public:
  sales ( )
  {
   for ( int j =0; j < SZ; j++)
   sales [ j ] = -1;
  }
  void getdata( )
  {
   char ch;
   while ( ch != 'n')
   {
    int month;
    cout << "Enter month (1-3): ";
    cin >> month;
    if ( month > SZ+1 )
    { cout << "Error!"; exit( 1 ); }
    printf ( "Enter sales for month: " );
    cin >> sales[month-1];
    if ( month < SZ )
    {
     cout << "Continue?(y/n)";
     cin >> ch;
    }
    else
    break;
   }
  }
 
  void putdata( )
  {
   int k = 1;
   for ( int j = 0; j < SZ; j++ )
   {
   if( sales[ j ] > 0 )
   {
   cout << "Sales for month " << k << " : " << sales [ j ] << endl;
   k++;
   }
   else
   break;
   }
  }
};
 
 
class book : public publication, public sales
{
 private:
  int num;
 public:
  void getdata( )
  {
   publication :: getdata();
   sales::getdata( );
   cout << "Enter book's pages number: ";
   cin >> num;
  }
 
  void putdata( )
  {
   publication :: putdata();
   sales::putdata( );
   cout << "Book's pages number: ";
   cout << num << endl;
  }
};
 
class Type : public publication, public sales
{
 private:
  float Time;
 public:
  void getdata( )
  {
   publication :: getdata( );
   sales::getdata( );
   cout << "Enter book's recording time: ";
   cin >> Time;
  }
 
  void putdata( )
  {
   publication :: putdata( );
   sales::putdata( );
   cout << "Book's recording time: ";
   cout << Time << endl;
  }
};
//////////////////////////////////////////////////////
int main ( )
{
 book b;
 Type t;
 
 b.getdata();
 b.putdata();
 system("PAUSE");
 t.getdata();
 t.putdata();
 
 system ("PAUSE");
 return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru