Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19

Discussione: [C]Ineserimento di ###

  1. #1

    [C]Ineserimento di ###

    Ciao,
    Devo fare un programma che, iserita un frase, inserisca al posto delle vocali ###
    Ho provato a fare il programma utilizzando il void è solo che non so se è la strada giusta.
    codice:
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    void nfrase(char []);
    int main()
    {
        char f[5000];
        printf("Scrivi una frase:");
        gets(f);
        printf("La nuova frase e\': %c\n", nfrase(f));
        system("pause");
        return 0;
    }
    //Implementazione della funzione che inserisce ### al posto delle vocali
    void nfrase(f1[])
    {
         int i, k=0;
         for(i=0; i<strlen(f1); i++)
         {
             f1[i]=tolower(f1[i]);
             if(f1[i]=='a' || f1[i]=='e' || f1[i]=='i' || f1[i]=='o' || f1[i]=='u')
             {
                   
                   for(k=i; k<strlen(f1); k++)
                       f1[k]=f1[k+3];
                   f1[i]='#';
                   f1[i+1]='#';
                   f1[i+2]='#';
             } 
             }
    }
    Avrei una domanda: ma se inserisco ### al posto di una vocale non vado a modificare la lunghezza dell'array?

    Ciao e grazie
    Your time is limited, so don't waste it living someone else's life. Stay hungry, stay foolish. (Steve Jobs)

  2. #2

    Re: [C]Ineserimento di ###

    Originariamente inviato da 21Edoardo96
    Ho provato a fare il programma utilizzando il void è solo che non so se è la strada giusta.

    Avrei una domanda: ma se inserisco ### al posto di una vocale non vado a modificare la lunghezza dell'array?
    Nonostante abbia aperto - in poco tempo - più di una discussione su nozioni elementari del C, ammiro il fatto che tu sperimenti delle soluzioni e implementi il codice relativo, tuttavia ti invito a studiare i fondamenti del C su libri seri e adatti alla situazione; questo 'consiglio' è ovviamente solo per il tuo bene, per non dover ricorrere ogni 10 minuti al forum..

    Il programma funziona? Perchè non lo compili, ed eventualmente posti gli errori ritornati?

    Certo, se inserisci "###" dovresti modificare le dimensioni dell'array, a meno che non ti interessi sovrascrivere anche i seguenti 2 caratteri dopo la vocale incontrata.
    "Memento audere semper"

    IBM Europe - Italy Group

  3. #3
    Ok grazie.
    L'unico problema di compilazione che riscontro è il sewguente:
    Alla riga 11: invalid use of void expression //colore rosso
    codice:
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    void nfrase(char []);
    int main()
    {
        char f[5000];
        printf("Scrivi una frase:");
        gets(f);
        printf("La nuova frase e\': %c\n", nfrase(f)); 
        system("pause");
        return 0;
    }
    //Implementazione della funzione che inserisce ### al posto delle vocali
    void nfrase(char f1[])
    {
         int i, k=0;
         for(i=0; i<strlen(f1); i++)
         {
             f1[i]=tolower(f1[i]);
             if(f1[i]=='a' || f1[i]=='e' || f1[i]=='i' || f1[i]=='o' || f1[i]=='u')
             {
                   
                   for(k=i; k<strlen(f1); k++)
                       f1[k]=f1[k+3];
                   f1[i]='#';
                   f1[i+1]='#';
                   f1[i+2]='#';
             } 
             }
    }
    Ciao e grazie
    Your time is limited, so don't waste it living someone else's life. Stay hungry, stay foolish. (Steve Jobs)

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    E non ti sei dato una spiegazione?

    Se la funzione non restituisce nulla, cosa dovrebbe utilizzare il printf ?

    Forse non hai chiaro il concetto di funzione void
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Originariamente inviato da oregon
    E non ti sei dato una spiegazione?

    Se la funzione non restituisce nulla, cosa dovrebbe utilizzare il printf ?

    Forse non hai chiaro il concetto di funzione void
    Inoltre dovrebbe essere %s e non %c, ma è un "errore minore" in questo caso...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  6. #6
    Giusto,
    allora cosa dovrei mettere accanto al return f1 o f1[] ?

    ciao e grazie
    Your time is limited, so don't waste it living someone else's life. Stay hungry, stay foolish. (Steve Jobs)

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Rifletti ... se devi restituire una frase (ovvero una stringa) cosa metteresti ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    un F1[] poichèp è un array giusto?
    Your time is limited, so don't waste it living someone else's life. Stay hungry, stay foolish. (Steve Jobs)

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Edoardo ... tu hai necessità di studiare da un libro, non da un forum. Finché non lo farai, non progredirai nella conoscenza del linguaggio, come appare evidente.

    Se la tua funzione accetta come parametro l'array e modifica lo stesso array, è normale che sia void ma poi non potrai usarla nella printf perché il risultato è *sempre* nell'array.
    Quindi dovrai scrivere

    codice:
    nfrase(f);
    printf("La nuova frase e': %s\n", f);
    Se, invece, vuoi che la funzione restituisca un altro array di char, diverso da quello inserito come parametro, dovrai operare diversamente nella funzione (allocando il nuovo array dinamicamente) e restituendo un puntatore a char

    char *nfrase(char f1[])
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    E' un array di caratteri, non puoi usare come valore di ritorno un array, un array altro non è che un puntatore al primo elemento, quindi userai un...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

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.