Ho bisogno urgente di una mano con questo programma in C per matematica.
In sostanza si tratta di un programma che, dati 5 punti (3 punti x e 2 punti y o viceversa) calcoli appunto la variabile mancante. Noi quei punti li prenderemo come riferimento in un piano cartesiano, e posso scegliere per uno di questi metodi:
Parabola
Retta che passa vicino ad ogni punto, ma non ne tocca nessuno
Retta spezzata
La parte complicata per me è proprio il calcolo del punto mancante, e mi serve assolutamente sapere quali casi bisogna controllare per i dati immessi (per esempio, se x è zero, allora fai questo, altrimenti ec...)
Ho già un codice scritto e funzionante
Questo: (è un programma che dati 4 punti cartesiani (2 x e 2y) trova la formula generica (y = mx + q) per gli altri due punti)
Codice: Seleziona tutto
#include<stdio.h>
main(){
int i,j,k; //i=righe j=colonne
int m1[3][2], m2[3][1], m3[2][3], m4[2][2], m5[2][1];
float a,b,m,q;
for(j=0;j<1;j++){ //prendo dati sotto forma di tratrice
for(i=0;i<3;i++){
printf("dammi X");
scanf("%d",&m1[i][j]);
printf("dammi Y");
scanf("%d",&m2[i][j]);
}
}
for(i=0;i<3;i++){
m1[i][1]=1;
}
/* for(i=0;i<3;i++){
for(j=0;j<2;j++){
printf("%d ",m1[i][j]);
}
printf("\n");
}
for(i=0;i<3;i++){
for(j=0;j<1;j++){
printf("%d ",m2[i][j]);
}
printf("\n");
}*/
for(i=0;i<3;i++){
for(j=0;j<2;j++){
m3[j][i]=m1[i][j];
}
}
/* for(i=0;i<2;i++){
for(j=0;j<3;j++){
printf("%d ",m3[i][j]);
}
printf("\n");
}*/
for(i=0;i<2;i++){
for(j=0;j<2;j++){
for(k=0;k<3;k++){
m4[i][j]=m4[i][j]+(m1[k][j]*m3[i][k]);
}
}
}
/* for(i=0;i<2;i++){
for(j=0;j<2;j++){
printf("%d ",m4[i][j]);
}
printf("\n");
}*/
for(i=0;i<2;i++){
for(j=0;j<1;j++){
m5[i][j]=(m2[0][j]*m3[i][0])+(m2[1][j]*m3[i][1])+(m2[2][j]*m3[i][2]);
}
}
/* for(i=0;i<2;i++){
for(j=0;j<1;j++){
printf("%d ",m5[i][j]);
}
printf("\n");
}*/
a=(m4[0][0]*m4[1][1])-(m4[0][1]*m4[1][0]);
b=(m5[0][0]*m4[1][1])-(m5[1][0]*m4[0][1]);
printf("%f %f ",a,b);
m=b/a;
q=(m5[1][0]-(m4[1][0]*m))/m4[1][1];
printf("%f %f",m,q);
}
Grazie mille a tutti ^^