tu jesteś tyłem odwrócony ;) (elipsa jedna jest) w konsoli
#include <iostream>
#include <cmath>
int y (int x);
void elipsa (int X, int Y, std::string &b);
using namespace std;
int X=20, Y=40;
//*************************************************************************************************
int main()
{
int Z=2*max(X,Y);
string a(Z,' ');
a[Z-1]='\n';
string b;
for (int j=0; j<(2*X+2); j++)
b+=a;
elipsa(X,Y,b);
cout <<b<< endl;
cout << "Hello world!" << endl;
return 0;
}
//-*************************************************************************
int y (int x){
return sqrt((1-pow(x,2)/pow(X,2))*pow(Y,2));
}
//-----------------------------------------------------------------------------------------
void elipsa (int X, int Y, std::string &b){
int Z=2*max(X,Y);
int Oy=X*Z;
int Ox=Z/2-1;
int rx=(Z/2-X)/2;
for (int i =X-1; i>=0; i--) {
// b[Oy+Z*i+y(i)+Ox]='8';
// b[Oy+Z*i-y(i)+Ox]='7';
b[Oy-Z*i+y(i)+Ox]='4';
b[Oy-Z*i-y(i)+Ox]='5';
b[Oy+Z*i+y(i)+Ox-rx]='8';
b[Oy+Z*i-y(i)+Ox+rx]='7';
/// b[Oy-Z*i+y(i)+Ox-rx]='4';
/// b[Oy-Z*i-y(i)+Ox+rx]='5';
}
for (int i=0; i<(2*X+1); i++)
b[i*Z-1]='\n';
}