#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_RIGHE 100 #define MAX_CHAR 100 void eliminarighevuote(char testo[MAX_RIGHE][MAX_CHAR], int *righe); void righeuguali(char testo1[MAX_RIGHE][MAX_CHAR], char testo2[MAX_RIGHE][MAX_CHAR], int righe1, int righe2); void contaparole(char riga1[], char riga2[]); int main (){ int righe1, righe2; char testo1[MAX_RIGHE][MAX_CHAR]; char testo2[MAX_RIGHE][MAX_CHAR]; int i; FILE *pf1; FILE *pf2; pf1 = fopen("testo1.txt", "r"); pf2 = fopen("testo2.txt", "r"); righe1 = 0; while (fgets(testo1[righe1],100,pf1) != NULL) { righe1++; } righe2 = 0; while (fgets(testo2[righe2],100,pf2) != NULL) { righe2++; } fclose(pf1); fclose(pf2); eliminarighevuote(testo1, &righe1); eliminarighevuote(testo2, &righe2); righeuguali(testo1, testo2, righe1, righe2); for(i=0;i<righe1;i++){ contaparole(testo1[i], testo2[i]); } } void eliminarighevuote(char testo[MAX_RIGHE][MAX_CHAR], int *righe){ //ELIMINA RIGHE VUOTE int i,j; int count = 0; char temp[MAX_CHAR]; for(j=0;j<*righe;j++){ if (!strcmp(testo[j],"\n")) { for(i=j;i<*righe-1;i++){ strcpy(temp,testo[i]); strcpy(testo[i],testo[i+1]); strcpy(testo[i+1],temp); } *righe = *righe - 1; count++; } } if (count!=0) { printf("Eliminate %d righe vuote:\n", count ); for(j=0;j<*righe;j++){ printf("%s", testo[j]); } } else{ printf("Non ci sono righe vuote\n" ); } } void righeuguali(char testo1[MAX_RIGHE][MAX_CHAR], char testo2[MAX_RIGHE][MAX_CHAR], int righe1, int righe2){ //CONTA RIGHE UGUALI - Aggiungere controllo lunghezza testo int i,j; int righeuguali = 0; for(i=0;i<righe1;i++){ for(j=0;j<righe2;j++){ if(!strcmp(testo1[i],testo2[j])){ printf("Righe uguali:\n%s\t%s\n", testo1[i], testo2[i] ); righeuguali++; } } } printf("Le righe uguali sono: %d\n", righeuguali ); } void contaparole(char riga1[], char riga2[]){ //CONTA PAROLE char *pch1, *pch2; char listaparole1[10][150], listaparole2[10][150]; int contaparole1 = 0; int contaparole2 = 0; int contaparoleuguali = 0; int i,j; pch1 = strtok(&riga1[0]," "); while (pch1 != NULL){ strcpy(listaparole1[contaparole1],pch1); contaparole1++; pch1 = strtok (NULL, " "); } pch2 = strtok(&riga2[0]," "); while (pch2 != NULL) { strcpy(listaparole2[contaparole2],pch2); contaparole2++; pch2 = strtok (NULL, " "); } for(i=0;i<contaparole2;i++){ for(j=0;j<contaparole1;j++){ if(!strcmp(listaparole1[j],listaparole2[i])){ //printf("Trovata parola uguale\n"); contaparoleuguali++; } } } printf("N. Parole = %d\t Parole Uguali: %d\n", contaparole1, contaparoleuguali); }