#include <stdio.h>
// La funzione ricerca la sequenza di arr2 in arr1
int find(char arr1[], int dim1, char arr2[], int dim2)
{
int i, j;
if (dim2>=dim1)
return 0;
for (i=0; i<dim1; i++){
for (j=0; j<dim2; j++){
// Se la prima sequenza è finita
if (i+j>=dim1)
break;
// Se i caratteri sono diversi
if (arr1[i+j]!=arr2[j])
break;
}
if (j==dim2) // Se abbiamo confrontato tutta la sequenza allora sono uguali
return 1;
}
return 0;
}
int main()
{
char arr1[15]={'c','i','a','o',' ','c','o','m','e',' ','s','t','a','i','?'};
char arr2[4]={'c','o','m','e'};
char arr3[4]={'c','o','M','e'};
char arr4[16]={'c','i','a','o',' ','c','o','m','e',' ','s','t','a','i','?','X'};
char arr5[14]={'c','o','m','E',' ','c','o','M','e',' ','c','o','m','e'};
int n;
n=find(arr1, 15, arr2, 4);
printf("Valore atteso 1 - Esito: %d\n", n);
n=find(arr1, 15, arr3, 4);
printf("Valore atteso 0 - Esito: %d\n", n);
n=find(arr1, 15, arr4, 16);
printf("Valore atteso 0 - Esito: %d\n", n);
n=find(arr5, 14, arr2, 4);
printf("Valore atteso 1 - Esito: %d\n", n);
return 0;
}
Torna agli esercizi: Esercizi