Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Come scartare parole che si ripetono più volte in [C]

    Ciao a tutti ,

    avrei un problema con questo programma : date una serie di parole in input scartare ,quelle che si ripetono più di 1 volta , finisco di immettere parole qualora supero la lunghezza massima della parola da me prestabilita cioè se ho ad esempio nel flusso d'ingresso

    palla capo cane giocattolo pippo pippo cane pippo palla

    ottengo in uscita: palla capo cane giocattolo pippo .

    Grazie in anticipo!

    ecco il mio codice
    codice:
    int main(){
    
    int i ,n=0, j;
    
    char *a[100] ;
    do{
    
    gets(a[n]);
    
    
    }while(strlen(a[n++])<=4);
    
    for(i=0;i<n;i++){
    for(j=0;j<n;j++)
    if(strcmp(a[i],a[j])==0){
     break;
    }
    if(i==j){
    
    printf("%s\n",a[i]);
    }
    }
    
    return 0;
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    213
    Secondo me devi rivedere la scrittura e soprattutto la logica del codice, come lo hai scritto tu non credo che riesca a fare ciò che il testo ti chiede...

  3. #3
    la prima parte credo che sia giusta in quanto , finisco l'inserimento dal momento che la lunghezza della stringa inserita è minore o uguale a 4 , il mio intento con il ciclo era quello di controllare se c'erano parole uguali tramite la comparazione tra stringhe il mio
    problema è come farlo valere per tutte le parole che devo mettere in confronto

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    213
    Si ma non so a te, ma inserita la prima parola premo invio e il programma va in loop...
    O bisogna inserirle tutte insieme (ed è comunque sbagliato il ciclo...)

  5. #5
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Con char *a[100] stai creando un array di 100 puntatori a char.

    con gets(a[n]) stai acquisendo una stringa, andandola a memorizzare.. boh, in memoria a caso... Devi allocare memoria con la malloc prima.
    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
    si inserisci una parola spaziatura altra parola e decidi te quando fermarti dal momento che inserisci una stringa maggiore di 4 caratteri premendo poi invio , se premi invio inserendo una parola minore di quattro caratteri continuerai a inserire parole .

    con a[n] avevo intenzione di tenere traccia delle parole memorizzandole, poi con un ciclo confrontavo
    ciascuna parola con le altre finchè arrivo all'ultima parola di confronto .

  7. #7
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    gets legge una riga non una parola, char *a[100] non allochi la memoria necessaria!
    Devi rivedere tutto il programma!
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  8. #8
    si è vero devo allocare prima memoria altrimenti il programma và in segmentation

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.