#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int ricerca_binaria(char word[], char *parole[], int n);
void main ()
{
char chiave[50];
int n,indice;
//*sono stati creati due array di stringhe denominati *parola[] e *parole2[]in modo tale che in qualsiasi modo venga scritta la parola (maiuscolo o minuscolo )l'esecutore riesca a tradurla *//
char *parole[]={"Abbattere","Abitante del sud","Affamato","Alzato","Avventura","Cane","Compleanno","Fondere","Gamba","Incontrare","Intenso","Maiale","Misto","Nota","Passeggiata","Potere","Quantità","Ristampa","Ritornare","Tempestivo","Vivace","Vuoto"};
char *parole2[]={"abbattere","abitante del sud","affamato","alzato","avventura","cane","compleanno","fondere","gamba","incontrare","intenso","maiale","misto","nota","passeggiata","potere","quantitò","ristampa","ritornare","tempestivo","vivace","vuoto"};
//*Ed un array di stringhe denominato *vocab[] contenente le corrispettive parole tradotte in inglese *//
char *vocab[]={"Overthrow","Southerner","Hungry","Up","Adventure","Dog","Birthday","Found","Leg","Encounter","Intense","Pig","Mixed","Note","Walk-over","Can","Quantity","Reprint","Go back","Timely","Zippy","Void"};
char testo[20],finepar[3];
printf("Inserisci la frase da tradurre : ");
gets(chiave);
//*Questa funzione da quel che ho appena approfondito mi "spacchettera" la frase in parole *//
char *word = strtok(chiave," .");
//*questo procedimento verrà effetuato fino a che la frase non sia terminata *//
while (word != NULL)
{
//* tenendo conto del numero di parole del mio dizionario *//
n=22;
//*se l'indice sarà maiuscolo verrà ricercato attraverso la ricerca binaria nell'array parole[] *//
indice=ricerca_binaria(word,parole,n);
//*se l'indice sarà minuscolo verrà ricercato attraverso l'algoritmo di ricerca binaria nell'array parole2[] *//
if (indice<0)
indice=ricerca_binaria(word,parole2,n);
if(indice>=0)
//*se la parola viene trovata sarà tradotta grazie all'array vocab[] *//
printf("%s: %s\n",word,vocab[indice]);
//*altrimenti comparirà la scritta chiave non trovata *//
else
printf("Chiave non trovata\n");
//*Uscita dal ciclo:la parola é terminata *//
word = strtok (NULL," .");
};
int ricerca_binaria(char word[], char *parole[], int n)
{
int mediano, primo=0, ultimo=n-1;
//*Il while gestisce i passi dell'ARBINI.Il predicato di permanenza nel cilo primo <= ultimo indica che il processo iterativo *//
//*continua se la posizione di array su cui effettuare la ricerca è costitutita da almeno un elemento. *//
while (primo<=ultimo)
{
//*Ruolo importante è giocato dall'elemento centrale dell'array detto mediano *//
mediano=(primo+ultimo)/2;
if(strcmp(word,parole[mediano])==0)
return mediano;
else if(strcmp(word,parole[mediano])<0)
//*Modificando il valore di ultimo si dovrà operare sulla semi-porzione di sinistra *//
ultimo=mediano-1;
else
//*Modificando il valore di primo si dovrà operare sulla semi-porzione di destra *//
primo=mediano+1;
}
}
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int ricerca_binaria(char word[], char *parole[], int n);
void main ()
{
char chiave[50];
int n,indice;
//*sono stati creati due array di stringhe denominati *parola[] e *parole2[]in modo tale che in qualsiasi modo venga scritta la parola (maiuscolo o minuscolo )l'esecutore riesca a tradurla *//
char *parole[]={"Abbattere","Abitante del sud","Affamato","Alzato","Avventura","Cane","Compleanno","Fondere","Gamba","Incontrare","Intenso","Maiale","Misto","Nota","Passeggiata","Potere","Quantità","Ristampa","Ritornare","Tempestivo","Vivace","Vuoto"};
char *parole2[]={"abbattere","abitante del sud","affamato","alzato","avventura","cane","compleanno","fondere","gamba","incontrare","intenso","maiale","misto","nota","passeggiata","potere","quantitò","ristampa","ritornare","tempestivo","vivace","vuoto"};
//*Ed un array di stringhe denominato *vocab[] contenente le corrispettive parole tradotte in inglese *//
char *vocab[]={"Overthrow","Southerner","Hungry","Up","Adventure","Dog","Birthday","Found","Leg","Encounter","Intense","Pig","Mixed","Note","Walk-over","Can","Quantity","Reprint","Go back","Timely","Zippy","Void"};
char testo[20],finepar[3];
printf("Inserisci la frase da tradurre : ");
gets(chiave);
//*Questa funzione da quel che ho appena approfondito mi "spacchettera" la frase in parole *//
char *word = strtok(chiave," .");
//*questo procedimento verrà effetuato fino a che la frase non sia terminata *//
while (word != NULL)
{
//* tenendo conto del numero di parole del mio dizionario *//
n=22;
//*se l'indice sarà maiuscolo verrà ricercato attraverso la ricerca binaria nell'array parole[] *//
indice=ricerca_binaria(word,parole,n);
//*se l'indice sarà minuscolo verrà ricercato attraverso l'algoritmo di ricerca binaria nell'array parole2[] *//
if (indice<0)
indice=ricerca_binaria(word,parole2,n);
if(indice>=0)
//*se la parola viene trovata sarà tradotta grazie all'array vocab[] *//
printf("%s: %s\n",word,vocab[indice]);
//*altrimenti comparirà la scritta chiave non trovata *//
else
printf("Chiave non trovata\n");
//*Uscita dal ciclo:la parola é terminata *//
word = strtok (NULL," .");
};
int ricerca_binaria(char word[], char *parole[], int n)
{
int mediano, primo=0, ultimo=n-1;
//*Il while gestisce i passi dell'ARBINI.Il predicato di permanenza nel cilo primo <= ultimo indica che il processo iterativo *//
//*continua se la posizione di array su cui effettuare la ricerca è costitutita da almeno un elemento. *//
while (primo<=ultimo)
{
//*Ruolo importante è giocato dall'elemento centrale dell'array detto mediano *//
mediano=(primo+ultimo)/2;
if(strcmp(word,parole[mediano])==0)
return mediano;
else if(strcmp(word,parole[mediano])<0)
//*Modificando il valore di ultimo si dovrà operare sulla semi-porzione di sinistra *//
ultimo=mediano-1;
else
//*Modificando il valore di primo si dovrà operare sulla semi-porzione di destra *//
primo=mediano+1;
}
}
}
Continua a darmi errori tipo : undefined reference to 'ricerca _binaria' :@