Rimuovere parole con duplicati - C

di il
71 risposte

71 Risposte - Pagina 5

  • Re: Rimuovere parole con duplicati - C

    Vero
    un errore per me
  • Re: Rimuovere parole con duplicati - C

    StandardOil ha scritto:


    Visto che ormai sono state pubblicate tante versioni, compresa una corretta, pubblico la mia:
    int analizzastringa(char s[], char c, int a)
    {
       int i = 0;
    
       while(s[i])
       {
          a = a - (s[i++] == c);
       }
    
       return (!a);
    }
    ottima soluzione.
    Non è molto distante da quella che mi ero scritto io, che non avevo pubblicato,
    int analizzastringa(char s[], char c, int a)
    {
    	int i = 0;
    
    	while( s[++i] )
    	{
    		if( s[i] == c )
    		{
    			if( --a == 0 )
    				return 1;
    		}
    	}
    
    	return 0;
    }
    ...ma tu mi hai superato.
  • Re: Rimuovere parole con duplicati - C

    Grazie
  • Re: Rimuovere parole con duplicati - C

    Ciao,
    pubblico anch'io la mia versione a solo scopo didattico. Come ho già scritto sono un studente un po' in là con gli anni che sta facendo di tutto per imparare. Mi scuso se ritorno qui dopo giorni ma, come avrete letto, sono stato impegnato anch'io con un esercizio.

    Non ricordo benissimo nemmeno la logica con cui ho cominciato a scrivere il programma, ma oggi l'ho terminato così:
    
    //Autore
    #include <stdio.h>
    #include <string.h>
    
    #define dim 200
    #define dim1 1
    #define max_s 100
    
    
    int analizzastringa(char str[], char c, int conteggio);
    int main(){
    
    	char q[dim]={0};
    	FILE * fp;
    	char c='a';
    	
    	fp= fopen("ciao.txt", "r");
    	
    		if(fp==NULL){
    			printf("errore nell'apertura del file");
    		}else{
    			
    			while(fscanf(fp,"%s",q)!=EOF) {
    				
    					
    				if((analizzastringa(q,c,1)==1) && q[0]==c) {	
    					printf("%s ", q);
    				}else{
    				}	
    			}
    		}
    
    	fclose(fp);
    
    	return 0;
    		}
    
    
    int analizzastringa(char str[], char c, int conteggio)
    {
    int i;
    int lunghezza_stringa;
    int contatore_caratteri=0;
    lunghezza_stringa=strlen(str);
    
    for (i=0; i<lunghezza_stringa; i++)
    if(str[i]==c) contatore_caratteri++;
    
    if(contatore_caratteri==conteggio) return (1); //Se il numero è uguale a conteggio  ritorna 1
    else
    return (0);
    }
  • Re: Rimuovere parole con duplicati - C

    Non capisco questa riga
    
      if((analizzastringa(q, c, 1) == 1) && q[0] == c)
    
    cosa volevi fare?
  • Re: Rimuovere parole con duplicati - C

    StandardOil ha scritto:


    Non capisco questa riga
    
      if((analizzastringa(q, c, 1) == 1) && q[0] == c)
    
    cosa volevi fare?
    Fa in modo che mi restituisca parole che contengono la lettera che mi interessa, solo se questa è la prima lettera della parola e sia presente solo lì.
  • Re: Rimuovere parole con duplicati - C

    Ma c quanto vale in quella riga di codice? Perché non usate il debugger?
  • Re: Rimuovere parole con duplicati - C

    Aspetta, non ti seguo. A me funziona tutto. Io compilo, e se non mi dà errori, eseguo. Che cosa sbaglio?
  • Re: Rimuovere parole con duplicati - C

    antragorn ha scritto:



    Fa in modo che mi restituisca parole che contengono la lettera che mi interessa, solo se questa è la prima lettera della parola e sia presente solo lì.
    E la consegna è questa?
  • Re: Rimuovere parole con duplicati - C

    Forse ho capito!!!Deve stampare tutte le parole "in cui la lettera iniziale compare una sola volta", non solo quelle che indico io con un char!
    Forse...
  • Re: Rimuovere parole con duplicati - C

    Ci sei...
    adesso vedi di correggere la tua main() e vedi se va
    e poi faresti felice un vecchio (io) se tentassi un po' di ottimizzazione.....
  • Re: Rimuovere parole con duplicati - C

    Hahah Grazie StandardOil!! Ce la metterò tutta!!
Devi accedere o registrarti per scrivere nel forum
71 risposte