Ciao.
Vorrei fare un programma che dato in input un insiemi di vettori prima disponga per colonne in una matrice questi vettori ( una matrice per ogni insieme), poi stampi a video questa matrice e poi calcoli la matrice delle distanze stampandola a video.
La matrice delle distanze è quella matrice che ha come elemento all’incrocio tra l’isima riga e la jsima colonna la distanza tra il vettore colonna i ed il vettore j della matrice dell’insieme.
Quindi faccio un esempio.
Inserisco i vettori (1,2) e (2,2) di dimensione 2 ciascuno.
Voglio che il programma stampi:
1 2
2 2
La matrice dell’insieme e poi calcoli la matrice
d((1,2), (1,2), d(1,2), (2,2)
d(2,2), (1,2) d(2,2,),(2,2)
dove d è la distanza euclidea dei vettori argomento
Ora sto provando con questo sorgente.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main () {
int N, M;
int i, j,;
printf (" __________________________________________________ __\n\n");
printf ("Inserisci la dimensione dei vettori\n");
scanf ("%d", &N);
printf ("Inserisci il numero di elementi del primo insieme\n");
scanf ("%d", &M);
int matrice1 [N][M];
for (j=0; j<M; j++){
for (i=0; i<N; i++) {
printf ("Dammi componente %d del vettore %d : ", i+1, j+1 );
scanf("%d", &matrice1[i][j]);
}}
printf ("La matrice del primo insieme risulta : ");
for (j=0; j<M; j++){
for (i=0; i<N; i++) {
printf ("\t%d\t \t%d\n : ", matrice1[i][j]);
}}
for (k=0; j<M; j++){
for (h=0; i<N; i++) {
dhk= ;
}}
printf("\n");
system ("pause");
exit(0);
}
d[i][j]=float distanza(int a[], int w[], int n)
{
int i;
int z[n];
double s=0;
for (i=0; i<n; ++i) z[i]=(v[i]-w[i])^2);
double s=0;
for (i=0; i<n; ++i) s=s+z[i]);
distanza=sqrt(s)
return s; }
ma mi sono bloccato.
Infatti nella funzione distanza euclidea non riesco a capire che argomenti passare per avere il calcolo della distanza.
Suggerimenti?