Errore esecuzione programma

di il
13 risposte

Errore esecuzione programma

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;
}

13 Risposte

  • Re: Errore esecuzione programma

    Il codice va postato tra tag CODE altrimenti non si legge bene e non si capisce.

    E quando posti un problema e parli di un errore devi indicare i dettagli dell'errore e quando si presenta (ovvero con quali dati in input)
  • Re: Errore esecuzione programma

    Ok scusa...ho modificato il messaggio.
    Per quanto riguarda l'errore, non mi fa inserire alcun dato in input ma stampa subito il messaggio "Errore sulla linea di comando".
    Penso che dipenda da questo pezzo, ma non so
       if (argc != 2)
        {
                 printf ("Errore sulla linea di comando\n");
                 return -1;
                 }
  • Re: Errore esecuzione programma

    Scusa ma l'hai scritto tu il codice ? Sai a cosa servono argc e argv ?
  • Re: Errore esecuzione programma

    Si l'ho scritto io...certo che so a cosa servono...il problema è che mi stampa subito il messaggio d'errore che è presente in quella condizione e non capisco perché, visto che argc è = 2
  • Re: Errore esecuzione programma

    Può essere che dipende dal fatto che uso come programma code::blocks?
  • Re: Errore esecuzione programma

    Argc non può essere 2 altrimenti quella if non sarebbe eseguita

    Come fornisci le opzioni da linea di comando quando esegui il programma?
  • Re: Errore esecuzione programma

    Scusa ma in che senso come fornisco le opzioni per la linea di comando?
  • Re: Errore esecuzione programma

    Il tuo programma si basa sulle opzioni fornite sulla linea di comando quando lo esegui (argc, argv ...) quindi ti chiedevo come fai a fornirli quando lo esegui per provarlo ...
  • Re: Errore esecuzione programma

    Ma io non fornisco niente...forse in questo sta il mio errore...io premo il tasto compila ed esegui....si apre la schermata e senza che io scriva niente o prema alcun pulsante in automatico viene scritto il messaggio presente dentro la condizione if(argc=!2)
  • Re: Errore esecuzione programma

    E no ... ovvio che non funziona ... il programma che hai scritto va eseguito fornendo -m o -a da linea di comando ...

    Altrimenti cosa significa quella parte in cui ti descrive come funziona -m e -a ?

    Dovrai scrivere da console

    esercizio -m
    esercizio -a

    Se esegui il codice nell'IDE, dovrai inserire -m -a attraverso una opzione del menu dell'IDE
  • Re: Errore esecuzione programma

    Il problema è che non so dove scrivere...sto cercando un manuale di code::blocks ma non lo trovo
  • Re: Errore esecuzione programma

    Project->Set Programs Arguments
  • Re: Errore esecuzione programma

    Grazie ci sono riuscito
Devi accedere o registrarti per scrivere nel forum
13 risposte