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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.04.2011, 16:16   #1
vladxxl
Пользователь
 
Регистрация: 27.11.2010
Сообщений: 16
По умолчанию Найдите ошибку

Код:
#include <iostream>
#include<stdlib.h>

using namespace std;

class Starter_point
{
      protected:
   int* matr;
	int n,a,b,v;
    
    public:
           
           Starter_point(){
                     cout<<"Construct\n";
                     matr = new int[n];
                     }
    Starter_point (const Starter_point& obj) {
          cout<<"constr of copying\n";
          matr = new int[n];
          }
           void initialize(){		
	cout << "Vvedite razmernost' massiva:\n";
	cin >> n;
	matr = new int[n];
    }
    void Make_array(){
    
	for(int i=0; i< n ; i++){
		matr[i]= rand()% 100;}
    }
     virtual void Outputer(){
	for(int i=0; i< n ; i++){
		cout << matr[i] << "  " ;
        }
        }
        
        ~ Starter_point()
        {cout<<"Destr\n";
                        delete[] matr;
                        }
                        };         
                        
    class Counter: public Starter_point{
          public:
                 void count_first(){
                      a=0;
                     for(int i=0; i< n ; i++){
                             if(matr[i]%2==0){
                                              cout<<matr[i]<<" ";
                                              a++;
                                              }
                                              }
                                              }
              virtual void Outputer(){
                      cout<<"\nThis array consist "<<a<<" pair elements."<<endl;
                      }
                      };
                      
    class Second: public Counter
    {
          public:
                 void count_sec(){
                      b=0;
                      for(int i=0; i< n ; i++){
                             if(matr[i]%2==0){
                                              cout<<matr[i]<<" ";
                                              b++;
                                              }
                                              }
                                              }
          virtual void Outputer(){
                      cout<<"\nThis array consist "<<a<<" pair elements."<<endl;
                      }
                      
          void TOTAL_count(){
               v=a+b;
               
                cout<<"\nBoth arrays consist "<<a<<" pair elements."<<endl;                              
                }
                };
	
	int main(){
        Starter_point ar0;
        Counter ar1;
        Second ar2;
        Starter_point * polik = &ar0;
        Counter * ppoly = &ar1;   
        Second * ppoly1 = &ar2;
        ppoly->initialize();
        polik->Make_array();
        polik->Outputer();
        ppoly->count_first();
        ppoly->Outputer();
        ppoly1->Make_array();
        ppoly1->count_sec();
        ppoly1->Outputer();
        ppoly1->TOTAL_count();
        
        system("pause");
                return 0;
        
        }

В Dev C++ нет ошибок, но ри хапуске консоль появляеться на пол секунды и всё. В Borland C++ 3.1 не хочет считать количество парных элементов в обоих массивах, тупо считает что их там ноль.
vladxxl вне форума Ответить с цитированием
Старый 23.04.2011, 17:09   #2
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Когда создаётся экземпляр класса:
Код:
Starter_point ar0;
Вызывается конструктор по умолчанию:
Код:
   Starter_point() {
      cout<<"Construct\n";
      matr = new int[n];
   }
Но значение n не инициализировано.
8Observer8 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
найдите ошибку Sergey240892 Помощь студентам 15 04.03.2011 11:34
Найдите ошибку St1fler92 Помощь студентам 4 26.05.2009 15:23
найдите ошибку Сова Паскаль, Turbo Pascal, PascalABC.NET 9 11.02.2009 18:46
Найдите ошибку! geniy JavaScript, Ajax 4 04.12.2007 16:22