Errore float..

di il
1 risposte

Errore float..

Salve a tutti, questo programma simula la caduta di un oggetto, ma verso la fine mi da un problema, dice che deve essere inserito qualcosa prima del float;
ve lo posto grazie a tutti

#include <iostream>
using namespace std;

void esegui_integrazione();

int main (int argc, char *argv[])
{
cout << "Integrazioine numerca dell'equazione del moto a = F_tot / m\n" << endl;

esegui_integrazione();

cout<< " Fine del programma\n";

system("pause");
}
/*******************************************************************************/
#define REALE float
//il tipo di virgola mobile usato nelle computazioni

#define MASSA 1.0
//la massa è intesa in kg

#define VELOCITA_INIZIALE 3.0
//velocità iniziale del corpo in metri al secondo

#define POSIZIONE_INIZIALE 5
//posizione iniziale in metri

#define T_MAX 3
//durata massima del tempo di caduta in secondi

#define ACC_GRAVITA 9.81
// è il modulo di g in m/s^2
#define A 0.1
//resistenza del mezzo A
#define B 0.1
//resistenza del mezzo B


//Asse delle poszioni y verso l'alto
/********************************************************************************/

REALE forza_gravita()
{
return -MASSA * ACC_GRAVITA;
// il meno è perchè la forza è contraria rispetto all'asse y delle posizioni
}
REALE forza_resistenza_mezzo(REALE velocita)

{
return (velocita*A)+(velocita*B*B);
}

REALE forza_totale()
{
return forza_gravita();
}
/*******************************************************************************/
#define DELTA_T_SCRITTURA 0.1
//Non scriviamo i dati dopo ogni iterazione, ma solo dopo ogni DELTA_T_SCRITTURA

REALE t_ultima_scrittura = -100;//negativo così scrive il primo valore 0


//void significa che fa ma non restituisce valori
void output_variabili( REALE t, REALE s, REALE v, REALE a )
{

if ( (t- t_ultima_scrittura) >= DELTA_T_SCRITTURA )
{
cout << t <<"\t"<< s <<"\t"<< v <<"\t"<< a << endl;
t_ultima_scrittura = t;
}
}

/*******************************************************************************/


#define DELTA_T 1E-3
//intervallo di tempo in secondi
//durante questo intervallo consideriamo che l'accelerazione sia costante

void esegui_integrazione()
{REALE accelerazione, cambiamento_velocita, velocita_iniziale, t;
REALE posizione, spostamento;
cout<< " Esecuzione\n";



t=0.0; // ISTANTE INIZIALE
velocita_iniziale= VELOCITA_INIZIALE;//la velocità iniziale del sottoprogramma prende il valore definito iniziale
posizione= POSIZIONE_INIZIALE;// posizione iniziale della caduta dell'oggetto

do{
//seconda legge di Newton
accelerazione = forza_totale(REALE velocita) / MASSA;//qui sta il problema, devo mettere li qual velocita...ma mi da errore se lo inserisco. solo che dovrebbe essere giusto!!

//Mostra sullo schermo gli attuali valori di t, s, v, a
output_variabili( t, posizione, velocita_iniziale, accelerazione );

//uso le leggi del moto uniformemente accelerato:
cambiamento_velocita = accelerazione * DELTA_T;

spostamento = velocita_iniziale * DELTA_T
+ 0.5 * accelerazione * DELTA_T * DELTA_T;

//trovo i nuovi valori di t,s e v:
t = t + DELTA_T;
velocita_iniziale = velocita_iniziale + cambiamento_velocita; //alla prossima assegnazione la velocità iniziale prende velocità iniziale + a*delta t
posizione = posizione + spostamento;
}
while(t<T_MAX);
}

1 Risposte

  • Re: Errore float..

    
    accelerazione = forza_totale((REALE )velocita) / MASSA;
    
    poi la funzione forza_totale non accetta parametri e tu li stai dando uno. c'è qualcosa che non va.
Devi accedere o registrarti per scrivere nel forum
1 risposte