Ultima modifica:
Ciao a tutti. Mentre scrivevo un programma che fa dei calcoli con pow, sin e cos, mi sono accorto che più scrivevo codice e più i risultati fossero sbagliati, nonostante fossero corretti nel caso commentassi le parti di codice seguenti. Mi sono accorto che cambiando i tipi di variabile questi risultati cambiavano a loro volta (e di molto). Vorrei sapere che tipo di variabile dovrei utilizzare per double long vettore[2], matrice[3][3], angolo; o quale può essere il problema della non riuscita.
Per fare un esempio: prima faccio cout dopo ogni calcolo e poi stampo la prima riga della matrice con un ciclo for ottenendo risultati diversi.
Questo è l'output:
Per fare un esempio: prima faccio cout dopo ogni calcolo e poi stampo la prima riga della matrice con un ciclo for ottenendo risultati diversi.
C++:
#include <iostream>
#include <math.h>
using namespace std;
int main() {
//DICHIARAZIONE VARIABILI
double long vettore[2], matrice[3][3], angolo;
vettore[0] = 1.0; //x
vettore[1] = 1.0; //y
vettore[2] = 1.0; //z
angolo = 120.0;
const double PI = 3.14;
//CALCOLO COMPONENTI MATRICE - PRIMA COLONNA
matrice[1][1] = pow(vettore[0], 2) + cos(angolo * PI / 180) * (1 - pow(vettore[0], 2));
matrice[1][2] = (1 - cos(angolo * PI / 180)) * vettore[1] * vettore[2] + (sin(angolo * PI / 180)) * vettore[2];
matrice[1][3] = (1 - cos(angolo * PI / 180)) * vettore[2] * vettore[0] - (sin(angolo * PI / 180)) * vettore[1];
cout << "PRIMA COLONNA" << endl;
cout << matrice[1][1] << endl;
cout << matrice[1][2] << endl;
cout << matrice[1][3] << endl;
//CALCOLO COMPONENTI MATRICE - SECONDA COLONNA
matrice[2][1] = (1 - cos(angolo * PI / 180)) * vettore[0] * vettore[1] - (sin(angolo * PI / 180)) * vettore[2];
matrice[2][2] = pow(vettore[1], 2) + (1 - pow(vettore[1], 2)) * cos(angolo * PI / 180);
matrice[2][3] = (1 - cos(angolo * PI / 180)) * vettore[1] * vettore[2] + (sin(angolo * PI / 180)) * vettore[0];
cout << "SECONDA COLONNA" << endl;
cout << matrice[2][1] << endl;
cout << matrice[2][2] << endl;
cout << matrice[2][3] << endl;
//CALCOLO COMPONENTI MATRICE - TERZA COLONNA
matrice[3][1] = (1 - cos(angolo * PI / 180)) * vettore[2] * vettore[0] + (sin(angolo * PI / 180)) * vettore[1];
matrice[3][2] = (1 - cos(angolo * PI / 180))* vettore[1] * vettore[2]- (sin(angolo * PI / 180)) * vettore[0];
matrice[3][3] = pow(vettore[2], 2) + (1 - pow(vettore[2], 2)) * cos(angolo * PI / 180);
cout << "TERZA COLONNA" << endl;
cout << matrice[3][1] << endl;
cout << matrice[3][2] << endl;
cout << matrice[3][3] << endl;
//STAMPA MATRICE - PRIMA RIGA
cout << endl << "PRIMA RIGA" << endl << endl ;
for(int x=1;x<4;x++){
cout << matrice[1][x];
cout << " ";
}
return 0;
}
Questo è l'output: