Ciao, sta volta sono bloccato in questo esercizio...
la parte a) l'ho completata...
ma la b) è un po' più ostica, come faccio a far scorrere la stringa 2 una parola più avanti della stringa 1 per il confronto?
il codice che ho scritto io compila ma da un risultato strano...
/*a) Scrivere un sottoprogramma confrontastringhe che riceve come parametro due stringhe
str1 e str2. Il sottoprogramma stampa a video i caratteri uguali che si trovano nella stessa
posizione in entrambe le stringhe e restituisce il loro conteggio.
b) Scrivere un programma che apre un file di testo testo.txt contenente una serie di lunghezza
indefinita (zero o più) di parole ciascuna lunga al massimo 15 caratteri. Il programma legge ciascuna
parola contenuta nel file e la confronta con la sua precedente mediante l’invocazione del
sottoprogramma confrontastringhe (il primo confronto viene eseguito fra la prima e la seconda
parola). Il programma infine stampa a video la somma complessiva di tutti i caratteri comuni tra
ciascuna coppia di parole consecutive. Ad esempio, se il file contiene il seguente testo:
Gatto Gattini 120 10 alce dice bica informatica 34tre tre tr
Il programma stamperà a video: Gatt 1 ce ic tr ed infine stamperà il valore 11.
*/
#include <stdio.h>
#include <string.h>
#define dim 5
int confrontastringhe(char a[], char b[]){
int lena=strlen(a);
int lenb=strlen(b);
int i;
int len;
int cont=0;
if(lena<lenb){
len=lenb;
}else{
len=lena;
}
for(i=0;i<len;i++){
if(a[i]==b[i]){
cont++;
}
}
return cont;
}
int main(){
FILE* fp;
char str1[dim];
char str2[dim];
fp=fopen("parole.txt","r");
if(fp==NULL){
printf("errore nell'apertura del programma");
}else{
while(fscanf(fp,"%s %s",str1, str2)!=EOF){
printf("%d ",confrontastringhe(str1,str2));
}
}
return 0;
}