[Geometria] Problema sui triangoli
Ciao ragazzi premetto che è dalla terza media che non rifaccio geometria.
Comunque oggi mi è stato chiesto di fare un programmino in C++, però per realizzarlo devo conoscere il teorema di pitagora.
Cmq vi leggo il problema
Sono dati due triangoli rettangoli A e B. Del triangolo A si conosce l'ipotenusa e un cateto. Del triangolo B si conoscono i due cateti. Dire quale dei due triangoli A o B presenta l'area maggiore o se e due aree sono uguali..
Tralasciando l'ultima parte mi serve solo sapere quali sono le due formule per il resto non ci sono problemi :D
Io da quanto mi ricordo per trovare l'ipotenusa bisogna fare il primo cateto alla seconda, + il secondo cateto alla seconda tutto fratto radice quadrata giusto??
Grazie in anticipo
Comunque oggi mi è stato chiesto di fare un programmino in C++, però per realizzarlo devo conoscere il teorema di pitagora.
Cmq vi leggo il problema
Sono dati due triangoli rettangoli A e B. Del triangolo A si conosce l'ipotenusa e un cateto. Del triangolo B si conoscono i due cateti. Dire quale dei due triangoli A o B presenta l'area maggiore o se e due aree sono uguali..
Tralasciando l'ultima parte mi serve solo sapere quali sono le due formule per il resto non ci sono problemi :D
Io da quanto mi ricordo per trovare l'ipotenusa bisogna fare il primo cateto alla seconda, + il secondo cateto alla seconda tutto fratto radice quadrata giusto??
Grazie in anticipo
Risposte
Se vuoi sapere il teorema di Pitagora...
Ipotenusa=
capito?
Ipotenusa=
[math]\sqrt{(cat_1)^2+(cat_2)^2}[/math]
capito?
Il programma è di una banalità assurda:
#include //Biblioteca Standard Input/Output
#include //Biblioteca Standard Matematica
using namespace std;
int main()
{
float cat1a=, cat2a=0, ipoa=0; //Dichiaro cateti triangolo A
float cat1b=0, cat2b=0, ipob=0; //Dichiaro cateti triangolo B
float areaa=0, areab=0; //Dichiaro le aree dei due triangoli
cout > ipoa;
cout > cat1a;
cat2a = sqrt(ipoa*ipoa-cat1a*cat1a);
cout > cat1b;
cout > cat2b;
ipob = sqrt(cat1b*cat1b+cat2b*cat2b);
areaa = (cat1a*cat2a)/2;
areab = (cat1b*cat2b)/2;
if(areaa > areab)
cout
#include //Biblioteca Standard Input/Output
#include //Biblioteca Standard Matematica
using namespace std;
int main()
{
float cat1a=, cat2a=0, ipoa=0; //Dichiaro cateti triangolo A
float cat1b=0, cat2b=0, ipob=0; //Dichiaro cateti triangolo B
float areaa=0, areab=0; //Dichiaro le aree dei due triangoli
cout > ipoa;
cout > cat1a;
cat2a = sqrt(ipoa*ipoa-cat1a*cat1a);
cout > cat1b;
cout > cat2b;
ipob = sqrt(cat1b*cat1b+cat2b*cat2b);
areaa = (cat1a*cat2a)/2;
areab = (cat1b*cat2b)/2;
if(areaa > areab)
cout
Progettista, giusto per chiedere, ma dove hai dichiarato le variabili? Cioè le hai dichiarate dopo main(), cioè dopo aver aperto il programma? Perchè usi variabili float?
IPPLALA:
Progettista, giusto per chiedere, ma dove hai dichiarato le variabili? Cioè le hai dichiarate dopo main(), cioè dopo aver aperto il programma? Perchè usi variabili float?
Le variabili in C++ e in C, le puoi dichiarare dove vuoi (tranne qualche limite imposto dal linguaggio C), ma la posizione in cui le dichiari conferisce a tali variabili degli attributi. Se le variabili sono dichiarate prima del main(), le variabili prendono il nome di variabili globali, se sono definite all'interno del main() allora prendono il nome di variabili locali.
Una variabile, in informatica, è una locazione di memoria riservata. Se una variabile è locale allora genera una locazione di memoria "temporanea", che viene cancellata dopo che l'esecuzione della funzione che la richiama termina. Una variabile globale invece viene mantenuta finchè l'intero programma è in esecuzione. L'utilizzo spropositato di variabili globali può causare un maggior utilizzo della memoria, quindi per programmi molto complessi, che utilizzano migliaia di variabili, è bene riflettere sull'utilizzo o meno delle variabili globali. Poi ci sono anche le variabili registro (register tipo nome_variabile) che vengono riservate, come si può capire, in uno dei registri del processore (memoria più veloce della RAM), come il registro EAX (nei processori con tecnologia x86), ma ovviamente tale spazio è molto limitato ed è buona norma riservarlo per processi veramente importanti. Se invece si volesse usare una variabile prima della sua effettiva dichiarazione, allora bisogna dichiarare la variabile come variabile esterna (extern tipo nome_variabile). La distinzione tra tali variabili risulterà importante quando si scriveranno proprie funzioni, definendo i prototipi e il loro algoritmo.
Perché ho usato il tipo "float"? Semplice! Perché molto probabilmente la lunghezza dei cateti o dell'ipotenusa è un numero decimale, non intero. Per maggior precisione potevo utilizzare il tipo "double".
Compreso? Se c'è qualche cosa che devo chiarire o qualche curiosità, io sono disponibile.
P.S: Ah, chiamatemi pure per nome, cioè Angelo, tanto non mollerò questo forum finché non mi bannerete :satisfied
Angelo piacere :hi
Sai perchè te l'ho chiesto? Perchè di solito, quando programmo, io uso sempre variabili globali, cioè le dichiaro sempre prima del main() e non sapevo si potessero dichiarare anche dopo. Non si finisce mai di imparare. E io per esempio l'avrei dichiarate come intere erroneamente, non pensando alla possibilità che non lo siano affatto... Scusi, progettista :thx
Sai perchè te l'ho chiesto? Perchè di solito, quando programmo, io uso sempre variabili globali, cioè le dichiaro sempre prima del main() e non sapevo si potessero dichiarare anche dopo. Non si finisce mai di imparare. E io per esempio l'avrei dichiarate come intere erroneamente, non pensando alla possibilità che non lo siano affatto... Scusi, progettista :thx
IPPLALA:
Angelo piacere :hi
Sai perchè te l'ho chiesto? Perchè di solito, quando programmo, io uso sempre variabili globali, cioè le dichiaro sempre prima del main() e non sapevo si potessero dichiarare anche dopo. Non si finisce mai di imparare. E io per esempio l'avrei dichiarate come intere erroneamente, non pensando alla possibilità che non lo siano affatto... Scusi, progettista :thx
MAI dichiarare variabili globali!
E se hai imparato così da un docente, vengo a Teramo a schiaffeggiarlo pubblicamente!
Tranquilla, tanto non commetti errori utilizzando variabili globali o definendo una variabile come intera, solo non avresti ottimizzato al massimo il tuo programma. Le variabili globali si dovrebbero usare solo quando vengono utilizzate spesso nell'intero programma e se sono di uso comune a più funzioni, altrimenti le inserisci dentro la definizione di funzione, come variabili locali, così quando la funzione (ad esempio quella per calcolare le potenze) termina di essere eseguita, anche la locazione di memoria viene cancellata e lo spazio recuperato potrà essere utilizzato da altre variabili.
Ad esempio, in linguaggio C, possiamo definire una nostra funzione per il calcolo delle potenze in questo modo:
double potenzapipplala(double valore, int potenza);
int main()
{
double potenzaippla(double valore, int potenza)
{
double valore_ritorno = 1.0;
int i;
for(i=0; i
Ad esempio, in linguaggio C, possiamo definire una nostra funzione per il calcolo delle potenze in questo modo:
double potenzapipplala(double valore, int potenza);
int main()
{
double potenzaippla(double valore, int potenza)
{
double valore_ritorno = 1.0;
int i;
for(i=0; i
Progettista, mi permetto di darti un consiglio per i cicli;
ovviamente non me lo sono inventato io, ma lo consiglia Bjarna Stroustroup, quindi è un consiglio ragionevole.
dichiara l'iteratore dentro al ciclo, ad es:
for (int i=0; i
ovviamente non me lo sono inventato io, ma lo consiglia Bjarna Stroustroup, quindi è un consiglio ragionevole.
dichiara l'iteratore dentro al ciclo, ad es:
for (int i=0; i
[quote]Cherubino:
Progettista, mi permetto di darti un consiglio per i cicli;
ovviamente non me lo sono inventato io, ma lo consiglia Bjarna Stroustroup, quindi è un consiglio ragionevole.
dichiara l'iteratore dentro al ciclo, ad es:
for (int i=0; i
Progettista, mi permetto di darti un consiglio per i cicli;
ovviamente non me lo sono inventato io, ma lo consiglia Bjarna Stroustroup, quindi è un consiglio ragionevole.
dichiara l'iteratore dentro al ciclo, ad es:
for (int i=0; i
Ok, capito grazie!
Progettista giusto per la cronaca ho provato a compilare il programma, ma non funziona dice che cè un problema qui
cout
cout
[quote]NikyRipy:
Progettista giusto per la cronaca ho provato a compilare il programma, ma non funziona dice che cè un problema qui
cout
Progettista giusto per la cronaca ho provato a compilare il programma, ma non funziona dice che cè un problema qui
cout