27/05/07 18:24
nicola.
Ciao,
cercando di imparare il C ho trovato quest'esercizio
L’altezza e la velocità di un oggetto che viene lanciato con una velocità
iniziale v0 e un angolo A (rispetto all’orizzonte) sono dati dalle
seguenti formule:
h(t) = v0*t*sin(A) - 0.5*g*t^2
v(t) = sqrt(v0^2 - 2*v0*g*t + g^2*t^2)
dove con '^' si indica l'elevazione a potenza. Il termine g rappresenta
l’accelerazione di gravità. L’oggetto cadrà al suolo quando h(t) = 0,
nell’istante t_suolo = 2(v0/g)sinA.
Siano dati i seguenti valori: A=30 gradi, v0 = 40 m/s, g = 9.81 m/s2.
Realizzare un programma per calcolare gli istanti in cui:
a) L’altezza non è minore di 15 m.
b) L’altezza non è minore di 15 m e contemporaneamente la velocità non
è maggiore di 36 m/s.
NB: rammentare che la funzione sin richiede l'angolo in radianti...
ho provato a farlo in questo modo
#include<math.h>
#include<stdio.h>
#include<stdlib.h>
#define PI 3.14
#define ANGOLO 30
#define VEL_INIZIALE 40
#define ACC_GRAVITAZIONALE 9.81
int main(){
float tempo,
altezza,
velocita,
radianti;
radianti = (30*PI)/180;
do{
altezza = (VEL_INIZIALE*tempo*sin(radianti));
altezza = altezza - (0.5*ACC_GRAVITAZIONALE*tempo*tempo);
velocita = VEL_INIZIALE*VEL_INIZIALE;
velocita = velocita - (2*VEL_INIZIALE*ACC_GRAVITAZIONALE*tempo);
velocita = velocita + (ACC_GRAVITAZIONALE*ACC_GRAVITAZIONALE*tempo*tempo);
velocita = sqrt(velocita);
if((altezza >= 15) && (velocita <= 36)){
printf("l'oggetto ad un istante t = %f si trova a %f metri dal suolo\n", tempo, altezza);
printf("ad una velocita di %f metri al secondo\n\n", velocita);
}
tempo = tempo + 0.1;
}while(tempo<5);
system("pause"
}
solo che, pur non sapendo niente di fisica, io credo che la velocità debba diminuire finchè l'oggetto non sia arrivato alla massima altezza per poi aumentare e non riesco a trovare cosa ci sia di sbagliato nel mio programma, spero possiate aiutarmi
grazie
cercando di imparare il C ho trovato quest'esercizio
L’altezza e la velocità di un oggetto che viene lanciato con una velocità
iniziale v0 e un angolo A (rispetto all’orizzonte) sono dati dalle
seguenti formule:
h(t) = v0*t*sin(A) - 0.5*g*t^2
v(t) = sqrt(v0^2 - 2*v0*g*t + g^2*t^2)
dove con '^' si indica l'elevazione a potenza. Il termine g rappresenta
l’accelerazione di gravità. L’oggetto cadrà al suolo quando h(t) = 0,
nell’istante t_suolo = 2(v0/g)sinA.
Siano dati i seguenti valori: A=30 gradi, v0 = 40 m/s, g = 9.81 m/s2.
Realizzare un programma per calcolare gli istanti in cui:
a) L’altezza non è minore di 15 m.
b) L’altezza non è minore di 15 m e contemporaneamente la velocità non
è maggiore di 36 m/s.
NB: rammentare che la funzione sin richiede l'angolo in radianti...
ho provato a farlo in questo modo
#include<math.h>
#include<stdio.h>
#include<stdlib.h>
#define PI 3.14
#define ANGOLO 30
#define VEL_INIZIALE 40
#define ACC_GRAVITAZIONALE 9.81
int main(){
float tempo,
altezza,
velocita,
radianti;
radianti = (30*PI)/180;
do{
altezza = (VEL_INIZIALE*tempo*sin(radianti));
altezza = altezza - (0.5*ACC_GRAVITAZIONALE*tempo*tempo);
velocita = VEL_INIZIALE*VEL_INIZIALE;
velocita = velocita - (2*VEL_INIZIALE*ACC_GRAVITAZIONALE*tempo);
velocita = velocita + (ACC_GRAVITAZIONALE*ACC_GRAVITAZIONALE*tempo*tempo);
velocita = sqrt(velocita);
if((altezza >= 15) && (velocita <= 36)){
printf("l'oggetto ad un istante t = %f si trova a %f metri dal suolo\n", tempo, altezza);
printf("ad una velocita di %f metri al secondo\n\n", velocita);
}
tempo = tempo + 0.1;
}while(tempo<5);
system("pause"
}
solo che, pur non sapendo niente di fisica, io credo che la velocità debba diminuire finchè l'oggetto non sia arrivato alla massima altezza per poi aumentare e non riesco a trovare cosa ci sia di sbagliato nel mio programma, spero possiate aiutarmi
grazie
aaa