#include "pch.h"
#include <iostream>
#include <conio.h>
#include <string>
using namespace std;
class Figura
{
protected:
char nazwa[50];
char obwod[10];
char pole[10];
public:
Figura(const char *x);
virtual void Nazwa() = 0;
virtual void Obwod() = 0;
virtual void Pole() = 0;
};
Figura::Figura(const char *x)
{
strcpy_s(nazwa, x);
}
void Figura::Nazwa()
{
printf("nazwa figury to %s \n", nazwa);
}
//________________________________________________________________________________________
class Prostokat : public Figura
{
double a;
double b;
public:
Prostokat(double a, double b) :Figura("Prostokat"), a(a), b(b) {}
virtual void Nazwa();
virtual void Obwod();
virtual void Pole();
};
void Prostokat::Nazwa()
{
printf("nazwa figury to %s \n", nazwa);
}
void Prostokat::Obwod()
{
cout << "obwod prostokata to" << 2 * a + 2 * b << endl;
}
void Prostokat::Pole()
{
cout << "pole prostokata to" << a * b << endl;
}
//________________________________________________________________________________________
class Kolo : public Figura
{
double r;
public:
Kolo(double r) :Figura("Kolo"), r(r) {}
virtual void Nazwa();
virtual void Obwod();
virtual void Pole();
};
void Kolo::Nazwa()
{
printf("nazwa figury to %s \n", nazwa);
}
void Kolo::Obwod()
{
cout << "obwod kola to \t" << 3.14 * 2 * r << endl;
}
void Kolo::Pole()
{
cout << "pole kola to \t" << 3.14*r*r << endl;
}
int main()
{
const int ile = 5;
Figura *figura[ile] = {};
figura[0] = new Kolo(5);
string linia;
int nr = 1;
fstream plik;
plik.open("liczby.txt", ios::in);
if (plik.good() = false)
cout << "blad otwarcia pliku";
while (getline(plik, linia))
{
switch (nr)
{
case 1: nazwa = linia; break;
case 2: r = atoi(linia.c_str()); break;
case 3: nazwa = linia; break;
case 4: a = atoi(linia.c_str());; break;
case 5: b = atoi(linia.c_str());; break;
}
nr++;
}
plik.close()
for (int i = 0; i < ile; i++)
{
figura[i]->Nazwa();
figura[i]->Obwod();
figura[i]->Pole();
}
for (int i = 0; i < ile; i++)
{
if (figura[i])
delete figura[i];
}
_getch();
return 0;
}
Plik tekstowy wygląda tak:
Kolo
4
Prostokat
5
8
W jaki sposób załadować ten plik do programu, a następnie stworzyć jedną tablicę, która przechowuje wszytskie obiekty figur jednoczesnie?
Jak nastepnie w jednej pętli wyświetlić listę figur, uwzględniając jej nazwę, obwód i pole?