Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 26
  1. #1
    Utente di HTML.it L'avatar di Cranfi
    Registrato dal
    Feb 2011
    Messaggi
    22

    Funzioni in [C]

    Ciao ragazzi, chi mi può dare una dritta con questo codice, mi da un errore dopo la graffa della fuinzione calculateChanges e un warning:"control reaches end o non-void function"

    #include <stdio.h>
    #include <stdlib.h>
    #define N 3
    void calculateChanges(int ticket[N]);
    int
    main ()
    {
    int i,j;
    int v[N];
    int ticket[N];
    j=1;
    for (i=0;i<n;i++)
    {
    printf ("Inserisci ore cliente %d: ",j);
    scanf ("%d",&v[i]);
    // controlliamo le ore di parcheggio, non devono essere superiori a 24
    if (v[i]>24)
    {
    puts("Ore massime di parcheggio consentite: 24.");
    abort();
    }
    calculateChanges(v); //richiamo la funzione
    }
    j=1;
    for (i=0;i<n;i++)
    {
    printf ("Cliente: %d%d%d", j,v[i],ticket[i]);
    j++;
    }
    }
    void calculateChanges(int ticket[N]);
    {
    int i,ticket[i];
    for (i=0;i<n;i++);
    {
    if (v[i]<3)
    ticket[i]=2;

    if (v[i]>19)
    ticket[i]=10;
    }
    }

    Ci sto provando da stamattina a costruire questo codice, mi sa che non ho capito bene come richiamare le funzioni..
    Grazie
    Cri
    Cri

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326

    Re: Funzioni in [C]

    1) nei cicli for in main() hai scritto i < n ma ci va ovviamente i < N;
    2) alla fine di main() ci andrebbe un return 0; (te lo dice appunto il "control reaches end o non-void function") dato che la funzione è dichiarata con un int come valore di ritorno. Non saresti costretto a mettere l'istruzione return se avessi dichiarato main() come void function, cosa peraltro assolutamente da evitare;
    3) quando definisci il corpo della funzione, dopo la sua intestazione non ci va il ; che è necessario solo nella dichiarazione del prototipo.

    Comunque il codice va postato tra tag CODE, vedi punto 6 del regolamento interno.

    Aggiungo: perché hai dichiarato l'array ticket nella funzione se l'hai passato come argomento? E perché hai usato i (che è una variabile) come suo size?
    every day above ground is a good one

  3. #3
    Oltre a questo, nella procedura calculateChanges hai scritto:

    codice:
    int i, ticket[i];
    Questo non ha alcun senso... ticket è un parametro locale della procedura (nell'intestazione hai int ticket[N] ..), non ha senso/ è sbagliato ridefinirlo.

    E sempre in questa procedura usi v[i], vettore che la procedura non riconosce sicuramente, perchè è vero che nel main tu hai passato un vettore chiamato v, ma in calculateChanges il nome che assume (per cosi dire) è ticket!
    Salute a voi, da Laikius!

    --> Faber est suae quisque fortunae <--

  4. #4
    Utente di HTML.it L'avatar di Cranfi
    Registrato dal
    Feb 2011
    Messaggi
    22

    Re: Funzioni in [C]

    Grazie delle risposte, ho modificato il codice come mi avete suggerito, ma mi da una serie di errori...

    #include <stdio.h>
    #include <stdlib.h>
    #define N 3
    void calculateChanges(int ticket[N]);
    int
    main ()
    {
    int i,j;
    int v[N];
    int ticket[N];
    j=1;
    for (i=0;i<N;i++)
    {
    printf ("Inserisci ore cliente %d: ",j);
    scanf ("%d",&v[i]);
    // controlliamo le ore di parcheggio, non devono essere superiori a 24
    if (v[i]>24)
    {
    puts("Ore massime di parcheggio consentite: 24.");
    abort();
    }
    calculateChanges(v); //richiamo la funzione
    }
    j=1;
    for (i=0;i<N;i++)
    {
    printf ("Cliente: %d%d%d", j,v[i],ticket[i]);
    j++;
    }
    return 0;
    }
    void calculateChanges(int ticket)
    {
    int i;
    for (i=0;i<N;i++);
    {
    if (v[i]<3)
    ticket[i]=2;

    if (v[i]>19)
    ticket[i]=10;
    }
    }
    Cri

  5. #5
    In calculateChanges, dopo il main, nell'intestazione, tra parentesi hai messo int ticket al posto di int ticket[N] e sempre in calculateChanges non puoi usare v[i] ma ticket[i]...

    p.s. per postare del codice devi usare il "pulsante" CODE sopra alla finestra di testo!
    Salute a voi, da Laikius!

    --> Faber est suae quisque fortunae <--

  6. #6
    Nono aspetta ho letto in fretta il codice e non avevo capito cosa volessi fare.... ci sono parecchi errori.
    Quello più grande forse è di pensare che calculateChanges possa avere accesso al vettore degli orari 'v', ma non è così perchè questo è 'interno' al main! Prova a rivedere un po' il codice!
    Piccolo indizio: seguendo la tua strada, a calculateChanges devi passare due parametri, il vettore riempito v e il vettore da riempire ticket!
    Salute a voi, da Laikius!

    --> Faber est suae quisque fortunae <--

  7. #7
    Utente di HTML.it L'avatar di Cranfi
    Registrato dal
    Feb 2011
    Messaggi
    22
    Grazie mille!
    Ma ho aggiunto anche v[i] nell' int della funzione, adesso ho 0 errors.
    Ciao e grazie ancora
    Cri

  8. #8
    Originariamente inviato da Cranfi
    Grazie mille!
    Ma ho aggiunto anche v[i] nell' int della funzione, adesso ho 0 errors.
    Ciao e grazie ancora
    Ecco appunto se rileggi il mio ultimissimo messaggio è quello che ti stavo suggerendo! ;-)
    Scusa se prima avevo letto in fretta
    Salute a voi, da Laikius!

    --> Faber est suae quisque fortunae <--

  9. #9
    Utente di HTML.it L'avatar di Cranfi
    Registrato dal
    Feb 2011
    Messaggi
    22
    Già, infatti non funziona...La funzione effettivamente è esterna al main, forse dovrei portarla all'iterno del main e comuncue richiamarla prima di stampare i valori di ticket..
    Cri

  10. #10
    Utente di HTML.it L'avatar di Cranfi
    Registrato dal
    Feb 2011
    Messaggi
    22
    Adesso ho provato semplicemente incollandolo all'interno del main(), mi dice che c'è errore nella riga del richiamo alla calculateChanges, dice:"undefined reference to '_CalculateChanges'
    codice:
    #include <stdio.h> #include <stdlib.h> #define N 3 void calculateChanges(int ticket[N]); int main () {     int i,j;     int v[N];     int ticket[N];     j=1;     for (i=0;i<N;i++)     {         printf ("Inserisci ore cliente %d: ",j);         scanf ("%d",&v[i]);         // controlliamo le ore di parcheggio, non devono essere superiori a 24          if (v[i]>24)               {                   puts("Ore massime di parcheggio consentite: 24.");                   abort();               }                calculateChanges(v);  //richiamo la funzione     }     j=1;     for (i=0;i<N;i++)     {         printf ("Cliente: %d%d%d", j,v[i],ticket[i]);         j++;     }      void calculateChanges(int ticket[N])     {         int i,v[i];         for (i=0;i<N;i++);         {             if (v[i]<3) ticket[i]=2;     // se le ore sono minori di 3, paga 2euro             if (v[i]>3 && v[i]<=19) ticket[i]=((v[i]-3)*0.5)+2;  // se le ore sono maggiori di 3, paga 2euro +0.5 ogni ora in più             if (v[i]>19) ticket[i]=10;              // se le ore sono maggiori di 19, paga 10euro         }     }     return 0; }
    Cri

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 © 2024 vBulletin Solutions, Inc. All rights reserved.