Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    29

    [C] Problemi con passaggio per referenza

    Salve a tutti, devo creare una funzione che mi conti le vocali presenti in una parola precedentemente inserita, con l'obbligo di passare la variabile delle vocali per referenza.
    Ecco il codice che ho creato :
    codice:
    #include <stdio.h>
    #include <iostream>
    #include <stdlib.h>
    #define MAX_DIM 15
    
    void vocals(char par[], int *voc){
         
         int i;
         for(i=0;i<=MAX_DIM;i++){
                                 if(par[i]=='a' || par[i]=='e' || par[i]=='i' || par[i]=='o' || par[i]=='u') *voc++;
                                 }                        
                                 } 
    
    main (){
    
         int  vocali=0;
         char parola[MAX_DIM];
         printf("Parola: ");
         scanf("%s",parola);
         vocals(parola,&vocali);
         printf("%d",vocali);
         system("PAUSE");
         return 0;
         }
    Però la variabile vocali, resta sempre a 0 e non riesco assolutamente a spiegarmi il perchè.
    Grazie in anticipo per l'aiuto

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Prova a scrivere (*voc)++
    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
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    (mi ha pubblicato due volte il messaggio, se un moderatore passa cancelli pure)
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    29
    Grazie mille funziona Ma a cosa era dovuto quest'errore? Cioè senza parentesi cosa andava ad incrementare?

    EDIT: Credo di aver capito. Senza le parentisimi mi andava ad incrementare la posizione in memoria a cui puntava il puntatore! Correggetemi se sbaglio.

  5. #5
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Prog13
    Grazie mille funziona Ma a cosa era dovuto quest'errore? Cioè senza parentesi cosa andava ad incrementare?
    *voc++ significa "prendi l'indirizzo di voc, incrementalo (in genere passa alla cella successiva) e poi estrai il contenuto"

    (*voc)++ significa invece "prendi il contenuto di voc (quindi l'intero puntato da voc) e poi incrementalo". Usando le parentesi vai quindi a modificare la priorità dei vari operatori.

    Originariamente inviato da Prog13
    EDIT: Credo di aver capito. Senza le parentisimi mi andava ad incrementare la posizione in memoria a cui puntava il puntatore! Correggetemi se sbaglio.
    Esattamente.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    29
    Ho appena notato un problema nel codice...Appena vengono inserite parole che contengono da 4 vocali in su, dalla parola successiva i valori sono sballati. Finchè inserisco parole con massimo 3 vocali, tutto fila liscio. Sapete dirmi come mai?

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Cioè? Fai un esempio pratico
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    29
    Grazie mille lo stesso, ho risolto da me Dovevo soltanto inizializzare le stringhe come vuote.

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