language: Forth (gforth-0.7.0)
date: 547 days 21 hours ago
link:
visibility: public
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
// Informatik - Serie 8 - Aufgabe 81
// Programm: incerse_matrix.cpp
// Autor: Alice Mazzolini
 
 
#include <iostream>
int main()
 
{
// input
std::cout << "inserire la matrice riga per riga!\n" ; // Inserire la matrice riga per riga
int mat[3][3]; // definisco una matrice 3x3
std::cin >> mat[0][0]; // inserisco gli elementi dati in input nella matrice
std::cin >> mat[0][1];
std::cin >> mat[0][2];
std::cin >> mat[1][0]; 
std::cin >> mat[1][1];
std::cin >> mat[1][2];
std::cin >> mat[2][0]; 
std::cin >> mat[2][1];
std::cin >> mat[2][2]; // ho creato la matrice!
 
// calcolo il determinante
std::cout << "Il determinante della matrice è: " ;
int det=0;
det= mat[0][0]*mat[1][1]*mat[2][2] + mat[0][1]*mat[1][2]*mat[2][0] + mat[0][2]*mat[1][0]*mat[2][1] - mat[2][0]*mat[1][1]*mat[0][2] - mat[2][1]*mat[1][2]*mat[0][0] - mat[2][2]*mat[1][0]*mat[0][1];
std::cout << det << "\n";
 
if(det!=0) {
    std::cout << "La matrice è invertibile! \n";
    
    //Calcolo la matrice inversa
    int inv[3][3]; // definisco una nuova matrice 3x3
 
    inv[0][0]= (mat[1][1]*mat[2][2] - mat[2][1]*mat[1][2]) /det;
    inv[0][1]= (mat[2][1]*mat[0][2] - mat[0][1]*mat[2][2]) /det;
    inv[0][2]= (mat[0][1]*mat[1][2] - mat[1][1]*mat[0][2]) /det;
    std::cout << inv[0][0] << " " << inv[0][1] << " " << inv[0][2] << "\n";
 
    inv[1][0]= (mat[2][0]*mat[1][2] - mat[1][0]*mat[2][2] /det;
    inv[1][1]= (mat[0][0]*mat[2][2] - mat[2][0]*mat[0][2] /det;
    inv[1][2]= (mat[1][0]*mat[0][2] - mat[0][0]*mat[1][2] /det;
    std::cout << inv[1][0] << " " << inv[1][1] << " " << inv[1][2] << "\n";
 
    inv[2][0]= (mat[1][0]*mat[2][1] - mat[2][0]*mat[1][1]) /det;
    inv[2][1]= (mat[2][0]*mat[0][1] - mat[0][0]*mat[2][1]) /det;
    inv[2][2]= (mat[0][0]*mat[1][1] - mat[1][0]*mat[0][1]) /det;
    std::cout << inv[2][0] << " " << inv[2][1] << " " << inv[2][2] << "\n";
 
    }
 
else
    std::cout << "La matrice non è invertibile!";
 
return 0;
}