PDA

View Full Version : [C++] Problema con esercizio


pixie
24-11-2007, 15:49
salve...avrei da creare un programma che calcola l'area di 3 punti nel piano cartesiano messi a seconda d come li vuole l'utente...
utilizzo il linguaggio c++ e ci dev'essere l'utilizzo di funzioni...aiutoooo...nn è semplice....ciaociao

tomminno
24-11-2007, 17:10
salve...avrei da creare un programma che calcola l'area di 3 punti nel piano cartesiano messi a seconda d come li vuole l'utente...
utilizzo il linguaggio c++ e ci dev'essere l'utilizzo di funzioni...aiutoooo...nn è semplice....ciaociao

L'area di 3 punti è semplicissima: 0 comunque tu li disponga sul piano :D

L'esercizio non ha niente di particolare si tratta di scrivere in codice un pò di formule matematiche tipo distanza tra 2 punti (sqrt, somme e sottrazioni), calcolo del coeffciente angolare di una retta (un pò di divisioni), rette perpendicolari (ancora divisioni) e area del triangolo (un pò di prodotti e divisioni).
Ti basta scrivere le funzioni che calcolano questi parametri.

variabilepippo
24-11-2007, 17:40
Una volta calcolata la lunghezza dei lati

AB = RADICE((Xb-Xa)^2 + (Yb-Ya)^2)
AC = RADICE((Xc-Xa)^2 + (Yc-Ya)^2)
BC = RADICE((Xc-Xb)^2 + (Yc-Ya)^2)

applichi la formula di Erone (http://it.wikipedia.org/wiki/Formula_di_Erone).

pixie
24-11-2007, 17:50
uhm capito....bhe dai ade provo poi vi faccio sapere...grz mille cmq...ciaociao

-Slash
24-11-2007, 20:27
ancora piu semplicemente basta che fai una matrice 3x3 con le varie cordinate cartesiane, e come terzo numero in colonna per ogni punto metti 1. calcoli il determinante e quello è il risultato dell'area. esempio

A(1,3)
B(0,5)
C(-1,6)

calcoli il determinante della matrice

1 3 1
0 5 1
-1 6 1

rayman2
24-11-2007, 20:57
figata il metodo del determinante! ci sai dire "perchè" funziona?

pixie
25-11-2007, 14:26
volevo sapere....ma cm faccio a mettere in c++ delle coordinate di punti?? cioè non è possibile dire ad es punto A (3;4) ?

nikdis
25-11-2007, 15:27
fai così:
# include <iostream>

int punto1[2],punto2[2],punto3[2];

int main() {

std::cout<< "inserisci le coordinate x e y del primo punto";
std::cout<< "coordinata x punto 1";
std::cin>> punto1[0];
std::cout<< "coordinata y punto 1";
std::cin>>punto1[1];

std::cout<< "inserisci le coordinate x e y del secondo punto";
std::cout<< "coordinata x punto 2";
std::cin>> punto2[0];
std::cout<< "coordinata y punto 2";
std::cin>>punto2[1];

std::cout<< "inserisci le coordinate x e y del primo punto";
std::cout<< "coordinata x punto 3";
std::cin>> punto3[0];
std::cout<< "coordinata y punto 3";
std::cin>>punto3[1];

e poi fai il determinante della matrice(che non mi ricordo come si fa)

punto1[0] punto1[1] 1
punto2[0] punto2[1] 1
punto3[0] punto3[1] 1

pixie
25-11-2007, 16:21
certo che è proprio tosto quell'esercizio qua....più semplice non poteva darcelo il prof...mamma ke roba...beh dai perlomeno visto che voglio diventare programmatore mi servirà in futuro....

rayman2
25-11-2007, 16:31
se la matrice è 3x3 usa sarrus:

|a b c|
|d e f| = aei + dhc + bfg - gec - dbi - hfa
|g h i|

]Rik`[
25-11-2007, 16:36
ancora piu semplicemente basta che fai una matrice 3x3 con le varie cordinate cartesiane, e come terzo numero in colonna per ogni punto metti 1. calcoli il determinante e quello è il risultato dell'area. esempio

A(1,3)
B(0,5)
C(-1,6)

calcoli il determinante della matrice

1 3 1
0 5 1
-1 6 1

che gran cosa calcolo numerico e matematica computazionale :D

nikdis
26-11-2007, 17:46
meglio ancora era fare una struct ma il programma funziona lo stesso