Anteprima
Vedrai una selezione di 1 pagina su 2
Programma C++ - Effetto Doppler Pag. 1
1 su 2
Disdici quando vuoi 162x117
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Sintesi
Titolo dell'appunto


Il programma domanda all'utente se rispetto all'aria, e' in moto la sorgente o l'osservatore,a che velocità è, e la frequenza d'onda sonora emessa,il programma esce se:
1)viene dato un input sbagliato alla prima domanda
2)la velocità in modulo eccede quella del suono Vs = 340 m/s
3)la frequenza è negativa
Le formule per la frequenza f' dell'effetto Doppler sono:

Vs * f
I. Sorgente in moto risp. all'aria a velocita' V:f' = --------
Vs - V

(Vs + V) * f
II. Oss. in moto risp. all'aria a velocita' V: f' = ------------
Vs
Estratto del documento

#include <iostream>

#include <cmath>

using namespace std;

float sorgInMoto (float, float); // se la sorgente e' in moto

float ossInMoto (float, float); // se l'osservatore e' in moto

const int V_SUONO = 340; // m/s

int main(){

float freq; // frequenza a riposo

float speed; // velocita' della sorgente o dell'osservatore

char tipo; // 'S' se si muove la sorgente, 'O' se l'osservatore

cout << "\n Effetto Doppler!!!\n" << " ------------------\n";

cout << " Digitare 's' se si muove la sorgente, 'o' se si muove

l'osservatore: ";

cin >> tipo;

if (tipo=='s' || tipo=='o' || tipo =='S' || tipo =='O'){

cout << " Inserire la velocita' (m/s) (positiva in caso di

avvicinamento): ";

cin >> speed;

//controllo sulla velocita'

if (abs(speed) >= V_SUONO){

cout << "Errore: la velocita' e' maggiore in modulo di quella

del suono.\n"; return -1;}

cout << " Inserire la frequenza 'a riposo' (Hz): ";

cin >> freq;

if (freq<0){

cout << "Errore: la frequenza deve essere positiva!\n";

return -1;}

cout << endl;

//calcoli veri e propri

if (tipo=='o' || tipo=='O')

freq = ossInMoto(speed, freq);

else freq = sorgInMoto(speed, freq);

//output finale

cout << " La frequenza risulta essere " << freq ;

return 0;}

else { //se inserito un carattere errato

cout << "Errore: dati incorretti.\n";

return -1;}

}

float ossInMoto (float vel, float nu){ //user-defined function caso 1: qui vel

e' dell'osservatore

float buffer = nu * (V_SUONO + vel) / V_SUONO;

Dettagli
Publisher
2 pagine
39 download