Salve ragazzi,ho visto già che esiste un thread simile,ma data la poca educazione di chi lo ha postato è stato chiuso.
In pratica ho il suo stesso codice,con il suo stesso problema (Mi fa ricercare solo 3 lettere per confrontarle con le ultime 3 di un altra parola)
Devo fare in modo che,con la chiave data all'inizio,mi trovi una parola nel dizionario corrispondente che abbia almeno 3 caratteri consecutivi uguali (In qualsiasi posizione della parole,non solo alla fine)
( Richiesta: - DATA UNA PAROLA RICERCARE NEL DIZIONARIO TUTTE LE PAROLE CHE HANNO ALMENO TRE LETTERE CONSECUTIVE E IN COMUNE CON LA PAROLA DATA - )
Qualcuno sarebbe pronto ad aiutarmi?
#include <stdio.h>
#include <string.h>
int ricerca_binaria(char chiave[], char *parole[], int n);
void main()
{
char chiave[10];
int n,indice,m,i,res=0;
char *parole[]={"Abete","Abiosfera","Abisso","Antonio","Argilla","Bambu","Bomba","Bucare","Buddismo","Buongiorno","Carne","Chioma","Cicca","Collare","Coppia"};
char *parole2[]={"abete","abiosfera","abisso","antonio","argilla","bambu","bomba","bucare","buddismo","buongiorno","carne","chioma","cicca","collare","coppia"};
char *vocab[]={"Nome di alcuni alberi","Parte del nostro pianeta dove non e' possibile la vita","Luogo in cui la grande profondita' conferisce un aspetto buio e pauroso","Nome proprio di persona","Tipo di roccia sedimentaria","Nome comune di una pianta","Involucro contenente esplosivo","Cavita del terreno","Religione indiana","Forma di saluto","La parte dei tessuti molli del corpo","Folta capigliatura","Avanzo di sigaro o di sigaretta","Oggetto da mettere al collo degli animali","Abbinamento di due cose o persone"};
char testo[20],finepar[10];
printf("Inserisci la parola da cercare: ");
gets(chiave);
n=15;
indice=ricerca_binaria(chiave,parole,n);
if (indice<0)
{
indice=ricerca_binaria(chiave,parole2,n);
}
if(indice>=0)
{
printf("%s: %s\n",chiave,vocab[indice]);
}
else
printf("Chiave non trovata\n");
do
{
printf("Inserisci altri tre caratteri: ");
gets(finepar);
} while(strlen(finepar)!=3);
printf("Ecco le parole che terminano per %s\n",finepar);
for(i=0;i<n;i++)
{
strcpy(testo,parole);
m=strlen(testo);
if (testo[m-3]==finepar[0] && testo[m-2]==finepar[1] && testo[m-1]==finepar[2])
{
printf("%s ",parole);
res++;
}
}
if(res==0)
printf("Nessun risultato\n");
getch();
}
int ricerca_binaria(char chiave[], char *parole[], int n)
{
int mediano, primo=0, ultimo=n-1;
while (primo<=ultimo)
{
mediano=(primo+ultimo)/2;
if(strcmp(chiave,parole[mediano])==0)
return mediano;
else if(strcmp(chiave,parole[mediano])<0)
ultimo=mediano-1;
else
primo=mediano+1;
}
return -1;
}