/* 47cppRetTriMat Programma che ricava l'equazione della retta e l'area del triangolo attraverso il metodo di Sarrus (utilizzo delle matrici) Riontino Raffaele 3AS INF 24-1-'10 */ # include # include using namespace std; void menu(); // funzione del menù void retta(); // funzione della retta void area(); // funzione dell'area void fine(); // funzione di fine programma // variabili globali char scelta; // funzione principale main() { do{ menu(); switch (scelta) { case 'R' : retta(); break; case 'A' : area(); break; case 'E' : fine(); exit(0); break; default : system("cls"); cout << "\n\n\n\t\tScelta non consentita\n\n\n\n\t"; system ("pause"); } // chiusura dello switch } while (1 == 1); // chiusura del ciclo do/while } // chiusura del main // definizione della funzione menu void menu() { system("cls"); cout << "\n\n\tProgramma che ricava l'equazione di una retta dati due punti\n\n"; cout << "\t\t e l'area di un triangolo dati tre vertici\n\n"; cout << "\t\t utilizzando il determinante della matrice\n\n"; cout << "\n\n\t\t\tMenu' principale\n\n\n"; cout << "\t- R - Equazione della retta\n\n"; cout << "\t- A - Area del triangolo\n\n"; cout << "\t- E - Esci\n\n\n"; cout << "\tDigita la scelta e premi invio ... "; cin >> scelta; scelta = toupper(scelta); } // definizione della funzione retta void retta() { float x1, x2, y1, y2, n1, n2, matrice[3][5]; int i, j; system ("cls"); cout << "\n\n\t\tCalcolo dell'equazione di una retta dati due punti\n\n"; cout << "\t\t attraverso il calcolo del determinante.\n\n\n"; cout << "\tInserisci le ascisse X e le ordinate Y dei due\n\n"; cout << "\tpunti seguendo il modello : P (X , Y)\n\n\n"; i=0; for (j=0 ; j<5 ; j++) // caricamento della prima riga + le celle che non contengono dati { matrice[i][j] = 1; matrice[1][2] = 1; matrice[2][2] = 1; } for (i=1 ; i<3 ; i++) { cout << "\tCoordinate del punto P"<< i << " :\n\n"; for (j=0 ; j<2; j++) { cout << "\tinserisci il valore di "; if (j == 0) {cout << "x : ";} else {cout << "y : ";} cin >> matrice[i][j]; matrice[i][j+3] = matrice[i][j]; }// chiusura j cout << "\n"; } // chiusura i system ("pause"); system ("cls"); cout << "\n\t\t\tProcedimento :"; cout << "\n\n\t\t P1 (" << matrice[1][0] << " , " << matrice[1][1] << ")" << " \tP2 (" << matrice[2][0] << " , " << matrice[2][1] << ")\n\n"; cout << "\n\tCaricamento della matrice : \n\n"; for (i=0 ; i<3 ; i++) { cout << "\t\t"; for (j=0 ; j<3 ; j++) { if ((i == 0) && (j == 0)) {cout << "x";} else { if ((i == 0) && (j == 1)) {cout << "y";} else { cout << matrice[i][j]; } } cout << "\t"; } // j cout << "\n\n"; }// i // calcolo del determinante x1 = 1; i = 0; for (j=0 ; j<3 ; j++) { x1 = matrice[i][j] * x1; i++; } y1 = 1; i = 0; for (j=1 ; j<4 ; j++) { y1 = matrice[i][j] * y1; i++; } n1 = 1; i = 0; for (j=2 ; j<5 ; j++) { n1 = matrice[i][j] * n1; i++; } y2 = 1; i = 0; for (j=4 ; j>1 ; j--) { y2 = matrice[i][j] * y2; i++; } x2 = 1; i = 0; for (j=3 ; j>0 ; j--) { x2 = matrice[i][j] * x2; i++; } n2 = 1; i = 0; for (j=2 ; j>-1 ; j--) { n2 = matrice[i][j] * n2; i++; } x1 = x1 - x2; y1 = y1 - y2; n1 = (n1 - n2) * -1; cout << "\n\n\tL'equazione della retta e' : "; if ((x1 == 0) && (y1 == 0) && (n1 == 0)) {cout << " 0 \n\n\t";} else { cout << x1 << "x "; if (y1 > 0){cout << "+";} cout << y1 << "y = "; cout << n1 << "\n\n\n\n\t"; } system ("pause"); } // definizione della funzione area void area() { float x1, x2, x3, y1, y2, y3, matrice[3][5]; int i, j; system ("cls"); cout << "\n\n\t\tCalcolo dell'ara di un triangolo dati tre vertici\n\n"; cout << "\t\t attraverso il calcolo del determinante.\n\n\n"; cout << "\tInserisci le ascisse X e le ordinate Y dei tre\n\n"; cout << "\tvertici seguendo il modello : V (X , Y)\n\n\n"; for (i=0 ; i<3 ; i++) { cout << "\tCoordinate del vertice V"<< i+1 << " :\n\n"; for (j=0 ; j<2;j++) { cout << "\tinserisci il valore di "; if (j == 0) {cout << "x : ";} else {cout << "y : ";} cin >> matrice[i][j]; matrice[i][j+3] = matrice[i][j]; }// chiusura j cout << "\n"; } // chiusura i // caricamento della terza colonna j=2; for (i=0 ; i<3 ; i++) { matrice[i][j] = 1; } cout << "\n\n"; system ("pause"); system ("cls"); cout << "\n\t\t\t\tProcedimento :"; cout << "\n\n\t\t V1 (" << matrice[0][0] << " , " << matrice[0][1] << ")" << " \tV2 (" << matrice[1][0] << " , " << matrice[1][1] << ")"<< " \tV3 (" << matrice[2][0] << " , " << matrice[2][1] << ")\n\n"; cout << "\n\tCaricamento della matrice : \n\n\n"; // calcolo del determinante x1 = 1; i = 0; for (j=0 ; j<3 ; j++) { x1 = matrice[i][j] * x1; i++; } x2 = 1; i = 0; for (j=1 ; j<4 ; j++) { x2 = matrice[i][j] * x2; i++; } x3 = 1; i = 0; for (j=2 ; j<5 ; j++) { x3 = matrice[i][j] * x3; i++; } y1 = 1; i = 0; for (j=4 ; j>1 ; j--) { y1 = matrice[i][j] * y1; i++; } y2 = 1; i = 0; for (j=3 ; j>0 ; j--) { y2 = matrice[i][j] * y2; i++; } y3 = 1; i = 0; for (j=2 ; j>-1 ; j--) { y3 = matrice[i][j] * y3; i++; } x1 = (x1 + x2 + x3) - (y1 + y2 + y3); //calcolo dell'area if (x1 < 0) {x1 = x1 * -1;} //rendo positivo il risultato della determinante nel caso dovesse essere negativo x1 = x1 / 2; for (i=0 ; i<3 ; i++) { cout << "\t\t"; if (i == 0) {cout << "1 \t| ";} if (i == 1) {cout << "- \t| ";} if (i == 2) {cout << "2 \t| ";} for (j=0 ; j<3 ; j++) { cout << matrice[i][j]; cout << " "; } // j cout << "|\n\n"; }// i cout << "\n\n\tIl valore dell'area del triangolo e' = " << x1; cout << "\n\n"; system ("pause"); } // definizione della funzione fine void fine() { system ("cls"); cout << "\n\n\n\t\t\tProgramma terminato\n\n\n\n\n\n"; cout << "\t\tRiontino Raffaele 3AS INF 24-1-'10\n\n\n\n\n\t\t"; system ("pause"); }