Problema, programma in C

di il
5 risposte

Problema, programma in C

Salve ragazzi, ho un problema che riguarda un programma in c.
Io avrei una matrice composta da caratteri e spazzi esempio, la prima riga e': {{' ','P',' ','I',' ','N','O',' ',' '}
ora dovrei confrontare quella riga con tutte le parole contenute in un file tipo:

PINO
PANE
LATTE
ecc.

il problema e' che non so come gestire gli spazzi, potreste darmi uno spunto su come risolvere questo problema?

5 Risposte

  • Re: Problema, programma in C

    Spazi con una z ...

    Ma che vuoi dire esattamente?
  • Re: Problema, programma in C

    Devo stampare a video tutte le parole che sono presenti sia nel file che nella matrice
  • Re: Problema, programma in C

    Ok ... Comincia a proporre un tuo codice...
  • Re: Problema, programma in C

    Non sapendo come gestire gli spazi ho diciamo, improvvisato. Questo e' il codice:
    #include<stdio.h>
    #include<stdlib.h>
    #include<stdbool.h>
    #define MAXP 7
    #define MAXL 9
    
    
    //prototipi
    void lettura_file(char P[][MAXL], char S[][MAXL]);
    
    
    
    int main()
    {
       	
       
       char P[MAXP][MAXL];
       char S[MAXP][MAXL] {{' ','P',' ','I',' ','N','O',' ',' ',},
                           {'A',' ','C',' ',' ','U','T',' ','O',},
                           {' ','A',' ',' ','L',' ','T',' ','O',},
                           {' ','L','A',' ',' ','M',' ','A',' ',},
                           {' ','L',' ',' ',' ','E',' ',' ',' ',},
                           {' ','A','N','C','O','R',' ','A',' ',},
                           {' ',' ','E',' ',' ','O','O',' ',' ',}};
    
       	   
       lettura_file(P,S);		   
    		   
    
      
       return 0;
    }
    
    void lettura_file(char P[][MAXL], char S[][MAXL])
    {
       FILE *fp;
       int condizione ,A[MAXL], j=0, i=0,k=0;
       fp=   fopen("parola.txt","r");
       if(fp==NULL) perror("Errore nell'apertura di un file");
       while(!feof(fp))
       {
          fscanf(fp, "%s", P[i]);
          i++;
       }
                
       while(i<MAXP-1)
       {	
           while((j<MAXL-1))
           {
              if(S[i][k]== ' ') 
              {
                 k++;		
    	} 
    	if(S[i][k]== P[i][j]) 
    	{
    	   A[i]=P[i][j];
    	   k++;
    	   j++;
              }
            }
           printf("%s",A[i]);
           i++;    
        }
     
      fclose(fp);
    }
  • Re: Problema, programma in C

    Grazie comunque per l'aiuto... ho risolto anni fa.

    -
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #define MAXP 7
    #define MAXL 10
    
    
    //prototipi
    int lettura_file(char P[][MAXL], char S[][MAXL]);
    void EstrazioneCar(char S[][MAXL], char A[][MAXL]);
    void Confronto(char P[][MAXL], char A[][MAXL], int dim);
    
    
    int main()
    {
       int dim;	
       char A[MAXP][MAXL];
       char P[MAXP][MAXL];
       char S[MAXP][MAXL] {{' ','P',' ','I',' ','N','O',' ',' ',},
                           {'A',' ','C',' ',' ','U','T',' ','O',},
                           {' ','A',' ',' ','L',' ','T',' ','O',},
                           {' ','L','A',' ',' ','M',' ','E',' ',},
                           {' ','L',' ',' ',' ','E',' ',' ',' ',},
                           {' ','A','N','C','O','R',' ','A',' ',},
                           {' ',' ','E',' ',' ','O','O',' ',' ',}};
    
       	   
       dim =lettura_file(P,S);
       EstrazioneCar(S,A);
       Confronto(P,A,dim);		   
    		   
    
      
       return 0;
    }
    
    int lettura_file(char P[][MAXL], char S[][MAXL])
    {
       FILE *fp;
       int condizione , j=0, i=0,k=0;
       fp=   fopen("parola.txt","r");
       if(fp==NULL) perror("Errore nell'apertura di un file");
       while(!feof(fp))
       {
          fscanf(fp, "%s", P[i]);
          i++;
       } 
     fclose(fp);
     return i;
    }
    
    
    void EstrazioneCar(char S[][MAXL], char A[][MAXL])
    {
       int i, j, l, cont;
       for(i=0; i<MAXP; i++)
       {
          l=0; cont=0;	      	
          for(j=0; j<MAXL-1; j++)
          {
          	if(S[i][j]!=' ') 
    	{
    	   A[i][l]= S[i][j];
    	   l++; cont++;
              }   
          }
          A[i][cont]= '\0';
           
       }
       
    }
    
    void Confronto(char P[][MAXL], char A[][MAXL], int dim)
    {
       int i,j;
       for(j=0; j<dim; j++)
       {
          for(i=0; i<MAXP; i++)
          {
             if(strcmp(P[j],A[i]) == 0) printf("riga: %d parola:%s \n",i+1 , P[j]);  	
          }	
       }
    }
Devi accedere o registrarti per scrivere nel forum
5 risposte