Ciao ragazzi...ho un problema con un programma....quando lo eseguo mi da subito errore dalla
linea di comando ma non capisco perché. Grazie mille
Questo è il testo dell'esercizio:
"Scrivere un programma che permetta di memorizzare un insieme di coordinate del piano cartesiano. Nel programma si definisca una struttura dati contenente due campi come segue:
struct coordinate{
int x;
int y;
};
Il programma deve acquisire da tastiera le coordinate x e y di 4 punti, corrispondenti ai punti toccati da un percorso e manipolare i dati ricevuti in base ad un parametro ricevuto da linea di comando:
? Parametro “–m” : calcola e stampa a video la lunghezza del percorso composto dai 4 segmenti.
? Parametro “–a” : calcola e stampa a video la distanza minima tra le coordinate inserite."
Questa è la mia risoluzione:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define N 4
typedef struct coordinate {
int x;
int y;
};
int main (int argc, char *argv[])
{
struct coordinate INS[N];
int i;
double dist, ris1;
double minore=1000.0;
if (argc != 2)
{
printf ("Errore sulla linea di comando\n");
return -1;
}
for (i=0; i<N; i++)
{
printf ("Ascissa punto %d:", i+1);
scanf("%d%*c", &INS[i].x);
printf ("Ordinata punto %d:", i+1);
scanf ("%d%*c", &INS[i].y);
}
if (argv[1][0]!='-')
{
printf ("Errore\n");
return -2;
}
else
{
switch (argv[1][1])
{
case 'm':
{
for(i=0; i<N; i++)
ris1=ris1+(sqrt(pow((INS[i].x - INS[i-1].x),2)+pow((INS[i].y - INS[i-1].y), 2)));
printf ("\nIl percorso e' lungo: %d\n", ris1);
}
break;
case 'a':
{
for (i=0; i<N; i++)
{
dist=sqrt(pow((INS[i].x - INS[i-1].x),2)-pow((INS[i].y - INS[i-1].y),2));
if (dist<minore)
dist=minore;
}
if (dist==minore)
printf ("\nLa distanza minima e': %.3f\n", dist);
}
break;
default:
printf ("Errore\n");
}
}
getc (stdin);
return 0;
}