ho due classi, una derivata dall'altra che devono stampare a schermo semplicemente dei numeri(coordinate x,y)

intestazione classe base: (elemento_base.h)
codice:
//header della classe
class elemento_base
{
 public:
        elemento_base();
        ~elemento_base();
        
        float x,y;
        int incl;
        
        void scrivi_coord();
              
        
 private:
        float _x,_y;
        int _incl; 
             
};

implementazione classe base: (elemento_base.cpp)
codice:
#include <cstdlib>
#include <iostream>
#include <cstdio>  //aggiunto per la funzione printf, per scrivere formattato
#include "elemento_base.h"

using namespace std;


//---------implementazione metodi-------------
void elemento_base::scrivi_coord()
{
     printf("------------------\n");
     printf("ascissa: %f\n",_x);
     printf("ordinata: %f\n",_y);
     printf("inclinazione: %i\n",_incl);
     printf("------------------\n");
}

//----------implementazione costruttore/distruttore-----

elemento_base::elemento_base()
{
    cout << "classe base" << endl;
}
elemento_base::~elemento_base()
{

}
intestazione classe derivata: (subposizione.h)
codice:
#include "elemento_base.h"

class subposizione : public elemento_base
{
    public: 
      subposizione();
     ~subposizione();
     
};
implementazione classe derivata: (subposizione.cpp)
codice:
#include "subposizione.h"
#include <iostream>


using namespace std;

//implementazione costruttire/distruttore
subposizione::subposizione()
{
    std:cout << "classe derivata" << endl;
}
subposizione::~subposizione()
{

}
intestazione main: [qui c'e' solo la dichiarazione di una struttura che mi serve per passare le coordinate nel main] (main.h)
codice:
//struttura per manipolare le coordinate
struct strutturaposizione
{
       float x_pos; 
       float y_pos;
       int gradi;    
};
implementazione del main: (main.cpp)
codice:
#include "subposizione.h"
#include <cstdlib>
#include "main.h"

int main(int argc, char *argv[])
{
    //popolo la struttura che mi servira per passare le coordinate alla classe
    strutturaposizione myPosition;    
    myPosition.x_pos = 100;
    myPosition.y_pos = 100;
    myPosition.gradi = 45;

    
    subposizione mySubpos;  
    
    //imposto le proprieta della classe
    mySubpos.x = myPosition.x_pos;
    mySubpos.y = myPosition.y_pos;
    mySubpos.incl = myPosition.gradi;
    
    mySubpos.scrivi_coord();  //chiamo il meodo
    
    system("PAUSE");
    return EXIT_SUCCESS;
    
}

ora quello che m aspetto è una cosa del genere:

classe base
classe derivata
------------------
ascissa: 100
ordinata: 100
inclinazione: 45
------------------
Premere un tasto per continuare . . .




ma ottengo questo:

classe base
classe derivata
------------------
ascissa: 0.000000
ordinata: 7803114877267773200000000000000000.000000
inclinazione: 2008948848
------------------
Premere un tasto per continuare . . .



ho provato a sostiture i codici di formattazione della riga printf("ascissa: %f\n",_x); con %s ma mi scrive

ascissa: null e poi va in crash l'applicazione

mi potete dare una mano? perche la formattazione viene in quel modo?