Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1

    Errore compilazione programma C

    Ciao a tutti! ho fatto un programma con codeblocks in C.
    Questo è il testo:
    Un’azienda ha dotato i propri dipendenti di un sensore wireless che emette un codice numerico
    ogni volta che un dipendente attraversa la porta d’ingresso/uscita dell’azienda o ne
    transita nelle vicinanze. L’azienda ha meno di 1000 dipendenti. Ad ogni attraversamento,
    il sensore registra ora e minuti del passaggio, insieme al codice del dipendente (un codice
    alfanumerico di max 10 caratteri).
    Si desidera sviluppare un programma in linguaggio C per il calcolo delle ore lavorative
    dei dipendenti dell’azienda. Il programma riceve sulla linea di comando un primo
    parametro, che rappresenta il nome del file contenente gli attraversamenti, ed un secondo
    parametro (opzionale), che rappresenta il codice numerico di un dipendente.
    Il file è relativo ai passaggi di una sola giornata, ed è composto da una serie di righe,
    ciascuna delle quali corrisponde ad un passaggio, ed è composta da tre campi:
    ora minuti codice_dipendente
    Se il programma viene invocato con un due parametri sulla linea di comando (vi è il
    codice del dipendente), allora dovrà stampare, per il dipendente specificato, il numero totale
    di minuti lavorati. Per determinare il numero di minuti lavorati occorre confrontare
    l’orario del primo passaggio con l’orario dell’ultimo passaggio per quel dipendente.
    Se invece il programma viene invocato con un solo parametro sulla linea di comando (il
    codice del dipendente è assente), allora il programma dovrà stampare il numero totale di
    dipendenti diversi che hanno lavorato in quel giorno (ossia che sono passati almeno una
    volta dalla porta).
    Ad esempio, dato il seguente file di testo passaggi.txt:
    8 30 abc222
    8 30 abc123
    8 31 azx112
    9 10 abc123
    12 10 abc123
    il programma (chiamato orario.c) si dovrà comportare nel modo seguente:
    c:> orario passaggi.txt
    Ci sono 3 dipendenti diversi.
    c:> orario passaggi.txt abc123
    Il dipendente abc123 ha lavorato per 220 minuti.

    Ma quando vado a compilare mi da un errore che "orario" non è riconosciuto come comando interno o esterno, un programma eseguibile o un file batch. Da cosa può dipendere?
    Ora vi posto il codice:
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     int main( int argc, char *argv[] )
    {
       const int MAX = 100 ;
       const int NUMDIP = 1000 ;
      const int LUNMAT = 10 ;
    FILE * f ;
    int min, max, tempo, passaggi, r ;
    int ore, minuti ;
    char riga[MAX+1] ;
     char matricola[LUNMAT+1];
    char nomi[NUMDIP][LUNMAT+1] ;
    int N, i, presente ;
    /* controllo parametri:
        argv[1] -> nome del file
       argv[2] -> matricola dipendente (opzionale)
    */
    
    if ( argc != 2 && argc != 3 )
     {
    printf("ERRORE: numero di parametri errato\n") ;
    exit(1) ;
    }
    
     /* apertura del file */
      f = fopen(argv[1], "r") ;
      if ( f==NULL )
       {
           printf("ERRORE: impossibile aprire il file %s\n", argv[1]) ;
           exit(1) ;
       }
     if ( argc == 2 )
      {
          /* CALCOLO DEL NUMERO DI DIPENDENTI DIVERSI */
         N = 0 ;
         while ( fgets( riga,MAX, f) != NULL )
           {
               r = sscanf( riga, "%*d %*d %s", matricola ) ;
               if ( r != 1 )
                  {
                    printf("Riga in formato errato - ignorata\n") ;
                   } else
                  {
                     /* Cerca se ’matricola’ è già presente */
                    presente = 0 ;
                    for (i=0; i<N && presente==0; i++)
                    if (strcmp(matricola, nomi[i])==0)
                    presente=1;
                    /* Se è nuovo, aggiungilo */
                   if ( presente==0 )
                    {
                       strcpy( nomi[N], matricola ) ;
                      N++ ;
    
                  }
             }
          }
       fclose(f) ;
       printf("Ci sono %d dipendenti diversi\n", N) ;
     }
     else
       {
         /* CALCOLO DEL TEMPO LAVORATO DAL DIPENDENTE LA CUI
            MATRICOLA È argv[2] */
            max = 0 ;
            min = 24*60 ;
             passaggi = 0 ;
             while ( fgets( riga, MAX, f ) != NULL )
              {
                r = sscanf( riga, "%d %d %s", &ore, &minuti, matricola ) ;
               if ( r != 3 )
                   {
                     printf("Riga in formato errato - ignorata\n") ;
                   }
              else
                  {
                   tempo = ore * 60 + minuti ;
                   if ( strcmp( matricola, argv[2] ) == 0 )
                   {
                      if ( tempo<min )
                      min = tempo ;
                      if ( tempo>max )
                      max = tempo ;
                      passaggi ++ ;
                    }
                 }
          }
     fclose(f) ;
     
      if ( passaggi>=2 )
        printf("Il dipendente di matricola %s ha lavorato per %d minuti\n", 
                   argv[2], max-min ) ;
     else
        printf("ERRORE: Il dipendente %s ha fatto solo %d passaggi\n",
                  argv[2], passaggi) ;
    }
    exit(0);

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: Errore compilazione programma C

    Originariamente inviato da franceskaaaz
    il programma (chiamato orario.c) si dovrà comportare nel modo seguente:
    c:> orario passaggi.txt
    Ci sono 3 dipendenti diversi.
    c:> orario passaggi.txt abc123
    Il dipendente abc123 ha lavorato per 220 minuti.

    Ma quando vado a compilare mi da un errore che "orario" non è riconosciuto come comando interno o esterno, un programma eseguibile o un file batch. Da cosa può dipendere?
    Come compili?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    vado nel prompt dei comandi e digito:
    cd desktop
    cd c
    cd orari
    orari passaggi.txt

    .....è sbagliato??

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da franceskaaaz
    vado nel prompt dei comandi e digito:
    cd desktop
    cd c
    cd orari
    orari passaggi.txt

    .....è sbagliato??
    In quale di quei passaggi stai chiamando il compilatore C?
    Risposta: da nessuna parte...

    Hai installato un compilatore C?
    Lo hai aggiunto alla variabile PATH del tuo sistema?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Tu pensi di sapere cosa significa "compilare" ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    allora lo compilo con codeblocks con GNU GCC compiler e mi da l'errore :numero di parametri errato..

    come lo devo compilare?? scusatemi ma sto preparando l'esame di info da casa e ho questi cavolo di problemi..uff

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Questo "cavolo" di problemi li avrai finché non ci dici cosa fai quando dici "compilo"
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    e mi da l'errore :numero di parametri errato
    A che riga si riferisce questo errore?

    (tra parentesi, magari indenta un po' meglio il codice, così è abbastanza inguardabile )
    Amaro C++, il gusto pieno dell'undefined behavior.

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Originariamente inviato da MItaly
    A che riga si riferisce questo errore?
    C'è molta confusione ... probabilmente quella frase te la dice in "esecuzione" non in compilazione.

    E te la dice perché lanci l'eseguibile senza i parametri previsti.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    codice:
    if ( argc != 2 && argc != 3 )
     {
        printf("ERRORE: numero di parametri errato\n") ;
        exit(1) ;
    }
    l'errore si riferisce a questa riga di codice.. non va bene allora quando lo mando in esecuzione dal prompt dei comandi che scrivo orari e passaggi.txt?
    come devo eseguirlo?con che metodo?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.