- 22,948
- 11,581
- CPU
- 1-Neurone
- Dissipatore
- Ventaglio
- RAM
- Scarsa
- Net
- Segnali di fumo
- OS
- Windows 10000 BUG
Te lo faccio vedere con un piccolo codice:non è per niente semplice allora ... x.x
come faccio a salvare i numeri in x e y?
considerando che gli indici devono essere richiamati dalla function?
C:
#include <stdio.h>
#include <math.h>
#define N 5 // dim. vettore
typedef struct punto {
double x;
double y;
} Punto;
void stampaPunto(Punto a){
printf("(%.2f, %.2f)", a.x, a.y);
}
stampaVettPunti(Punto ps[], int n){
for(int i=0; i<n; i++){
stampaPunto(ps[i]);
if(i < n-1) printf(", ");
}
}
int main(void)
{
printf("*********************************\n");
printf(" INIZIO\n");
printf("*********************************\n\n");
double xs[N] = {0.5, 1.0, 2.0, 3.0, 5.0}; // tutte le x
double ys[N] = {0.5, 1.0, 2.0, 3.0, 5.0}; // tutte le y
Punto ps[N]; // vettore di punti (xs[i], ys[i])
for(int i=0; i<N; i++){
ps[i].x = xs[i];
ps[i].y = ys[i];
}
stampaVettPunti(ps, N);
printf("\n*********************************");
printf("\nPremi un tasto per terminare\n");
getchar();
return 0;
}
codtruisco 2 vettori, uno per le x, uno per le y; a ciascuna ordinata x corrisponde un'ordinata y, quindi i vettori
xs = {0.5, 1.0, 2.0, 3.0, 5.0}
ys = {0.5, 1.0, 2.0, 3.0, 5.0}
definiscono i punti (0.5, 0.5) , (1.0, 1.0), (2.0, 2.0), (3.0, 3.0), (5.0, 5.0)
ok? tutte queste coppie costituiscono un Punto ciascuna; per costruire un vettore di punti lo metti a sua volta in un array
Punto ps[N]; // vettore di punti (xs, ys)
costruito con un ciclo for. E' di questo vettore Punto ps[N] che devi restituire gli indici dei punti con distanza minima; coi i numeri che ho messo, indici da restituire sono 0 e 1 perché tra (0.5, 0.5) e (1.0, 1.0) la distanza è minima.
Fatti il copia-incolla, compila ed esegui e capirai meglio. Fai delle prove cambiando i valori e/o la dimensione N (N=quanti punti). Tu devi calcolare TUTTE le distanze tra tutti i punti
Ultima modifica: