[Homeros] отличия синтаксиса C++ Re: [OFTOPIC] I: Популярность языков программирования

Michael Pozhidaev msp на altlinux.ru
Чт Апр 8 01:02:08 UTC 2010


Александр, добрый день!

Четыре типа поправок нужно сделать, чтобы собралось:

1. заголовок iostream.h переименовать в iostream;
2. объекты cout, cin, endl должны быть std:;cout, std::cin, std::endl;
3. у конструктора masSort нужно убрать тип возвращаемого значения xx;
4. и ещё в одном месте используется переменная, объявленная внутри
for(). Её нужно вынести в начало. 

После этого  всё собирается командой g++ -otest test.cpp. Текст, который
у меня получился после правки, привожу ниже.

PS
В это трудно поверить, но я помню, что обещал сделать. :)) Обязательно
напишу на выходных, в рабочие дни несколько раз хотел сесть, но по
вечерам работать не в состоянии.

#include <iostream>

class mas
{
protected:
int N;
float* m;
public:
mas (): N(0),m(0) {};
mas (int n): N (n) {m=new float[N];}
int& GetN()
{return N;}
float* GetM ()
{return m;}

void show ();
~mas ()
{delete[]m;}
virtual float calc()=0;
};
void mas:: show()
{
for (int i=0; i<N; ++i)
  std::cout << m[i] << "  ";
 std::cout << std::endl;
}
class masSred : public mas
{
protected:
float Sred;
public:
masSred (int a): mas (a){}
virtual float calc ()
{
float sum=0;
for(int i=0; i<N;++i)
sum=sum+m[i];
Sred=sum/N;
return Sred;
}
};
class masMax: public mas
{
protected:
float Max;
public:
masMax(int a):mas(a){}
masMax(){}
virtual float calc()
{
Max=m[0];
for(int i=0;i<N;++i)
if(m[i]>Max)
Max=m[i];
return Max;
}
};
class masMaxSred: public masSred, public masMax
{
public: masMaxSred (int a): masSred (a){}
};
class masSort: public mas
{
public:
float calc ()
{
}

masSort()
{
}
masSort (int);
void Sort();
};
masSort:: masSort (int n)
{
N=n;
m=new float [n];
for (int i=0; i<N; ++i)
m[i]=N-i;
}
void masSort:: Sort()
{
float buf;
for (int i=1; i<N;++i)
for (int j=N-1; j>=i;--j)
if (m[j-1] > m[j])
{
buf=m[j];
m[j]=m[j-1];
m[j-1]=buf;
}
}
int main()
{
masSred obj1(10);
 int i;
for(i=0; i<obj1.GetN();++i)
  std::cin >> obj1. GetM ()[i];
 std::cout <<"sred znach"<< obj1. calc()<<std::endl;
masMax obj2(7);
for(i=0; i<obj2. GetN();++i)
  std::cin >> obj2. GetM()[i];
 std::cout << "znach max"<< obj2. calc()<<std::endl;

mas* p;
p=& obj1;
 std::cout << "sred znach" << p-> calc()<<std::endl;
p=& obj2;
 std::cout << "srednee znach ravno" << p-> calc()<<std::endl;
masSort obj3(8);
obj3. show ();
obj3. Sort ();
obj3. show ();
return 0;
}

-- 
Michael Pozhidaev. Tomsk, Russia. E-mail: msp на altlinux.ru
Russian info page: http://www.marigostra.ru/



Подробная информация о списке рассылки Homeros