View difference between Paste ID: aNUXRea5 and Nxirf4CW
SHOW: | | - or go back to the newest paste.
1
#include <cstdlib>
2
#include <iostream>
3
using namespace std;
4
5
class Figura
6
{
7
  public:
8
    Figura(){}
9
    virtual char * nazwa() = 0;
10
    virtual double pole() = 0;
11
};
12
13
class Kwadrat : public Figura
14
{
15
  public:
16
    Kwadrat( int b ) : bok( b ) {}
17
    char * nazwa() { return "Kwadrat"; }
18
    double pole() { return bok * bok; }
19
    double bok;
20
};
21
22
class Kolo : public Figura
23
{
24
  public:
25
    Kolo( int p ) : promien( p ) {}
26
    char * nazwa() { return "Kolo"; }
27
    double pole() { return 3.14 * promien * promien; }
28
    double promien;
29
};
30
31
class Barbapapa : public Figura
32
{
33
  public:
34
    Barbapapa() {}
35
    char * nazwa() { return "Barbapapa"; }
36
    double pole() { return 1000; }
37
};
38
39
40
int oldMain()
41
{
42
  Figura * f;
43
  int opcja;
44
45
  cout << "\n1. Kwadrat\n2. Kolo\n3. Barbapapa\n>> ";
46
  cin >> opcja;
47
  switch( opcja )
48
  {
49
    case 1: f = new Kwadrat( 10 );
50
            break;
51
    case 2: f = new Kolo( 5 );
52
            break;
53
    case 3: f = new Barbapapa();
54
            break;
55
  }
56
57
  cout << endl << "Figura: " << f->nazwa(); // (*f).nazwa()
58
  cout << endl << "Pole:   " << f->pole();
59
60
  cin.ignore();
61
  cin.get();
62
  return EXIT_SUCCESS;
63
}
64
65
66
int main()
67
{
68
  const int MAKS = 10;
69
  Figura * f[ MAKS ];
70
71
  int ileFigur = 0;
72
  int opcja;
73
74
  do
75
  {
76
    if( ileFigur >= MAKS )
77
      break;
78
79
    cout << "\n1. Kwadrat\n2. Kolo\n3. Barbapapa\n4. Koniec\n>> ";
80
    cin >> opcja;
81
    switch( opcja )
82
    {
83
      case 1: f[ ileFigur++ ] = new Kwadrat( 10 );
84
              break;
85
      case 2: f[ ileFigur++ ] = new Kolo( 5 );
86
              break;
87
      case 3: f[ ileFigur++ ] = new Barbapapa();
88
              break;
89
    }
90
  }
91
  while( opcja != 4 );
92
93
  cout << endl << "Liczba figur w kolekcji: " << ileFigur;
94
95
  for( int i = 0; i < ileFigur; ++i )
96
    cout << endl << "Figura: " << f[ i ]->nazwa(); // (*f).nazwa()
97
98
  double suma = 0;
99
  for( int i = 0; i < ileFigur; ++i )
100
    suma += f[ i ]->pole();
101
  cout << endl << "sumaryczne pole: " << suma;
102
103
  cin.ignore();
104
  cin.get();
105
  return EXIT_SUCCESS;
106
}