Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    156

    [C] Ricerca consonanti e concatenazione

    Salve, sto scrivendo una funzione che concatena a ogni stringa di un vettore di stringhe le sole consonanti di ogni parola ( del rispettivo indice) di un altro vettore di stringhe. Ho usato un vettore ausiliario dove copiare prima tutte le consonanti e poi ho concatenato ciascuna stringa di questo vettore al primo. Il codice è questo
    codice:
    void concatena(char v1[][maxl],int dim1,char v2[][maxl],int dim2,char temp[][maxl])
    {
        //char temp[maxp][maxl];
        int i,k;
        k=0;
        for(i=0;i<dim2;i++)
        {
            while(v2[i][k]!='\0')
            {
                if(v2[i][k]!='a' && v2[i][k]!='e'&& v2[i][k]!='i'&& v2[i][k]!='o'&& v2[i][k]!='u')
                {
                    temp[i][k]=v2[i][k];
                }
                k=k+1;
            }
            temp[i][k]='\0';
        }
        for(i=0;i<dim1;i++)
        {
            if(i<dim2)
            {
                strcat(v1[i],temp[i]);
            }
        }
    }
    Dove il vettore temp[][] l'ho dichiarato nel main perchè ho provato a stamparlo per vedere cosa non andava. Il risultato è questo:

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Mostra sempre il codice completo di main !

    E anche il contenuto dei file che leggi ... ovviamente ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    156
    Main + Lettura:
    codice:
    #include<stdio.h>
    #include<stdlib.h>
    #define maxp 10
    #define maxl 20
    #include<string.h>
    void lettura(char v1[][maxl],int *dim1,char v2[][maxl],int *dim2);
    void concatena(char v1[][maxl],int dim1,char v2[][maxl],int dim2,char temp[][maxl]);
    main()
    {
        int dim1,dim2,dimc;
        char temp[maxp][maxl];
        int i;
        char v1[maxp][maxl],v2[maxp][maxl],vc[maxp][maxl];
        lettura(v1,&dim1,v2,&dim2);
        if((dim1==-1||dim2==-1))
        {
            printf("C'e' stato un errore nell'apertura di uno dei due file\n");
        }
        else
        {
            for(i=0;i<dim1;i++)
            {
                printf("%s\n", v1[i]);
            }
            
            
            concatena(v1,dim1,v2,dim2,temp);
            
            for(i=0;i<dim1;i++)
            {
                printf("%s\n", temp[i]);
            }
            
        }
        
    system("pause");
    
    }
    void lettura(char v1[][maxl],int *dim1,char v2[][maxl],int *dim2)
    {
        int i;
        char nome1[10],nome2[10];
        FILE *f1;
        FILE *f2;
        printf("Inserire il nome del primo file\n");
        scanf("%s", nome1);
        printf("Inserire il nome del secondo file\n");
        scanf("%s", nome2);
        f1=fopen(nome1,"r");
        if(f1==NULL)
        {
            *dim1=-1;
        }
        else
        {
            fscanf(f1,"%d", dim1);
            for(i=0;i<*dim1;i=i+1)
            {
                fscanf(f1,"%s ", v1[i]);
            }
            fclose(f1);
        }
        f2=fopen(nome2,"r");
        if(f2==NULL)
        {
            *dim2=-1;
        }
        else
        {
            fscanf(f2,"%d", dim2);
            for(i=0;i<*dim2;i=i+1)
            {
                fscanf(f2,"%s ", v2[i]);
            }
            fclose(f2);
         }
    }
    I file:

  4. #4
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    Scusami ma l'uso [k] è corretto in concatena?
    Per gli Spartani e Sparta usa spartan Il mio github

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    156
    Ecco! Ho trovato un errore....provo a correggere!

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    156
    Ho modificato così:
    codice:
    for(i=0;i<dim2;i++)
        {
            z=0;
            while(v2[i][k]!='\0')
            {
                
                if(v2[i][k]!='a' && v2[i][k]!='e'&& v2[i][k]!='i'&& v2[i][k]!='o'&& v2[i][k]!='u')
                {
                    temp[i][z]=v2[i][k];
                    z=z+1;
                }
                k=k+1;
            }
            temp[i][z]='\0';
            
        }
    Ma l'errore continua ad essere lo stesso di prima, anche se al primo ciclo funziona bene la cosa. Dove sta l'errore?

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