[C] Problema con argomenti linea di comando

di il
1 risposte

[C] Problema con argomenti linea di comando

Ciao a tutti,
Ho un problema con l'acquisizione di un carattere da linea di comando.
Ho visto che c'è già una discussione aperta, ma non risponde al mio problema.

TESTO
Scrivere un programma che permetta di memorizzare un insieme di coordinate del piano cartesiano.
Il programma deve acquisire da tastiera in due vettori paralleli 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.

Il mio problema è che non capisco come fare per usare come comandi "-m"
e "-a".
Lascio il codice del mio programma che però funziona solo con "m" e "a", senza trattino.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define N 4

int main(int argc, char* argv[])
{
    int x[N], y[N], i;
    float parz, percorso=0.00, diff[N-1], min;
    char scelta;
    printf("Introduci le coordinate cartesiane di 4 punti distinti:\n");
    for (i=0; i<N; i++)
    {
        printf("Punto %2d: ", i+1);
        scanf("%d%d", &x[i], &y[i]);
    }
    scelta=*argv[1];

    if (scelta=='m')
    {
        for (i=1; i<N; i++)
        {
            parz=sqrt((x[i]-x[i-1])*(x[i]-x[i-1])+(y[i]-y[i-1])*(y[i]-y[i-1]));
            percorso=percorso+parz;
        }
        printf("La lunghezza totale del percorso e' %.2f\n", percorso);
    }

    else
    {
        if (scelta=='a')
        {
            for (i=1; i<N; i++)
                diff[i-1]=sqrt((x[i]-x[i-1])*(x[i]-x[i-1])+(y[i]-y[i-1])*(y[i]-y[i-1]));

                i=0;
                if (diff[i]<=diff[i+1])
                {
                    if (diff[i]<=diff[i+2])
                        min=diff[i];
                    else min=diff[i+2];
                }
                else
                    if (diff[i]>diff[i+1])
                    {
                        if (diff[i+1]<=diff[i+2])
                            min=diff[i+1];
                        else min=diff[i+2];
                    }

            printf("La distanza minima e' ");
            if (min==diff[i])
                printf("%.2f tra il punto 1 e 2", min);
            else
            {
                if (min==diff[i+1])
                    printf("%.2f tra il punto 2 e 3", min);
                else printf("%.2f tra il punto 3 e 4", min);
            }
        }
        else printf("ERRORE: L' opzione scelta non e' stata riconosciuta!!\n\n");
    }




    return 0;
}

1 Risposte

Devi accedere o registrarti per scrivere nel forum
1 risposte