|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jun 2003
Città: Pianeta Terra
Messaggi: 281
|
PICCOLO ALGORITMO RICERCA IN UN ARRAY
LINGUAGGIO C
Salve ragazzi mi aiutate ??? Devo fare un piccolo algoritmo che attraverso la funzione strcmp mi faccia una ricerca all'interno di un array di tipo array[5][30]. Deve essere un array di struct i cui campi siano puntatori a char. L'array deve contenere una lista di 30 nome cognome via città tel per favoreeee!!! Help!!!
__________________
LE AVVENTURE DI AL METALLER E CHELA FDM - IL FOTOROMANZO TRASH! When I'm walking a dark road... I am a man who walks alone... |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8878
|
scusa ma perchè dai una matrice se vuoi un array???
comunque basta che fai un array di struct tipo: const n = 30; struct persona { char nome [20]; char cognome [20]; char via[20]; char citta [20]; char telefono [12]; }; persona arr[n]; è questo quello che vuoi?? int k =1; char ric[20]; fflush (stdin); gets (ric); for (int i=0; i<n && k;i++) { if ((strcmp (arr[i].cognome, rice)==0) { k = 0; } } printf "Numero cella %d", i); ~§~ Sempre E Solo Lei~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jun 2003
Città: Pianeta Terra
Messaggi: 281
|
Nel programma devo usare array di struct, i cui campi siano puntatori a char.
Devo poi inserire 10 sequenze di dati NOME COGNOME ECC... e poi fare una ricerca in tutti i campi.
__________________
LE AVVENTURE DI AL METALLER E CHELA FDM - IL FOTOROMANZO TRASH! When I'm walking a dark road... I am a man who walks alone... |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8878
|
non capisco cosa significa puntatori a char
![]() ~§~ Sempre E Solo Lei~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Jun 2003
Città: Pianeta Terra
Messaggi: 281
|
no
![]() cmq grazie lo stesso ![]()
__________________
LE AVVENTURE DI AL METALLER E CHELA FDM - IL FOTOROMANZO TRASH! When I'm walking a dark road... I am a man who walks alone... |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Apr 2003
Messaggi: 16462
|
Basta cambiare la definizione della struct in questo modo
struct persona { char * nome; char * cognome; char * via; char * citta; char * telefono ; }; Ed ogni volta che inserisci un dato nei campi nome,cognome,via,citta,telefono devi usare un funzione di allocazione tipo la malloc. Es: nome = (char *)malloc(20*sizeof(char)) per allocare 20 bytes per la stringa; poi da input fare gets(nome). Idem per gli altri campi. Sta a te scegliere la dimensione massima della stringa (nel mio esempio e' 20 ma e' un valore arbitrario)
__________________
MICROSOFT : Violating your privacy is our priority Ultima modifica di goldorak : 15-02-2004 alle 19:57. |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8878
|
scusa ma malloc si usa ancora???
~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Apr 2003
Messaggi: 16462
|
Quote:
In Ansi C sicuramente. Poi xber-gigi ha chiesto come risolvere il problema con char *, quindi l'uso di malloc e' necessaria.
__________________
MICROSOFT : Violating your privacy is our priority |
|
![]() |
![]() |
![]() |
#9 | |
Senior Member
Iscritto dal: Jun 2003
Città: Pianeta Terra
Messaggi: 281
|
Quote:
Potresti farmi per favore un esempio più chiaro??? Bhe dico proprio pratico? Comè la scringa quindi per ricevere l'imput??? Mi potresti far vedere in pratica??? Grazie mille!
__________________
LE AVVENTURE DI AL METALLER E CHELA FDM - IL FOTOROMANZO TRASH! When I'm walking a dark road... I am a man who walks alone... Ultima modifica di xber-gigi : 16-02-2004 alle 13:32. |
|
![]() |
![]() |
![]() |
#10 | |
Senior Member
Iscritto dal: Jul 2002
Città: Roma
Messaggi: 806
|
Quote:
In tal modo avresti la sequenza: gets(nome); struttura.nome = strdup (nome); gets(cognome); struttura.cognome = strdup (cognome); gets(indirizzo); struttura.indirizzo = strdup (indirizzo); etc.. etc... Ovviamente usare sempre la free() per deallocare i puntatori quando non servono più. |
|
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Jun 2003
Città: Pianeta Terra
Messaggi: 281
|
per favore potreste farmi esempi pratici più chiari???
la struttura è questa: struct tipo {char *nome; char *cognome; char *indirizzo; char *citta;}; struct tipo *dati[5][30]; devo fare un ciclo for per inserire 10 input. ma come lo prendo l'input?!?!?!?! per favore!!! aiuto!!! fatemi vedere praticamente!!! sto uscendo pazzo!
__________________
LE AVVENTURE DI AL METALLER E CHELA FDM - IL FOTOROMANZO TRASH! When I'm walking a dark road... I am a man who walks alone... |
![]() |
![]() |
![]() |
#12 | |
Senior Member
Iscritto dal: Jul 2002
Città: Roma
Messaggi: 806
|
Quote:
1) l'input lo prendi con la gets() [vedi mio post precedente] 2) quello che hai ottenuto con la gets() lo passi alla variabile all'interno della struttura tramite la strdup() la quale alloca il puntatore e vi copia il valore. [vedi esempio nel mio post precedente] Il tutto allinterno di un ciclo da ripetersi per N volte (N=10) Inoltre struct tipo *dati[5][30]; è errata. Io farei: struct tipo dati[10]; char VarInput [256]; e farei (in un loop) printf ("Inserisci nome: "); gets (VarInput); dati [i].nome = strdup (VarInput); printf ("Inserisci cognome: "); gets (VarInput); dati [i].cognome = strdup (VarInput); printf ("Inserisci indirizzo: "); gets (VarInput); dati [i].indirizzo = strdup (VarInput); ........ ........ Spero di esser stato chiaro stavolta |
|
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Apr 2003
Messaggi: 16462
|
Ti butto giu' il programma a grandi linee a meno di qualche errore di sintassi :
Codice:
# define maxline 30 ; struct persona { char * nome; char * cognome; char * via; char * citta; char * telefono; }; struct persona elenco[10]; for (int i=0; i< 10 ;i++) { elenco[i].nome =(char*) malloc(maxline*sizeof(char)); puts("Inserire il nome \n"); gets(elenco[i].nome); elenco[i].cognome=(char*)malloc(maxline*sizeof(char)); puts("Inserire il cognome\n"); gets(elenco[i].cognome); elenco[i].via=(char *)malloc(maxline*sizeof(char)); puts("Inserire la via\n"); gets(elenco[i].via); elenco[i].citta=(char*)malloc(maxline*sizeof(char)); puts("Inserire la citta\n"); gets(elenco[i].citta); elenco[i].telefono=(char *)malloc(maxline*sizeof(char)); puts("Inserire il numero di telefono\n"); gets(elenco[i].telefono); } //qua va messa la funzione di ricerca
__________________
MICROSOFT : Violating your privacy is our priority |
![]() |
![]() |
![]() |
#14 | |
Senior Member
Iscritto dal: Jun 2003
Città: Pianeta Terra
Messaggi: 281
|
Quote:
error C2224: left of '.nome' must have struct/union type error C2224: left of '.cognome' must have struct/union type
__________________
LE AVVENTURE DI AL METALLER E CHELA FDM - IL FOTOROMANZO TRASH! When I'm walking a dark road... I am a man who walks alone... |
|
![]() |
![]() |
![]() |
#15 | |
Senior Member
Iscritto dal: Jul 2002
Città: Roma
Messaggi: 806
|
Quote:
Nella fretta avevo dimenticato di sostituire il "." con "->" ossia: printf ("Inserisci nome: "); gets (VarInput); dati [i]->nome = strdup (VarInput); printf ("Inserisci cognome: "); gets (VarInput); dati [i]->cognome = strdup (VarInput); printf ("Inserisci indirizzo: "); gets (VarInput); dati [i]->indirizzo = strdup (VarInput); etc |
|
![]() |
![]() |
![]() |
#16 |
Senior Member
Iscritto dal: Jun 2003
Città: Pianeta Terra
Messaggi: 281
|
non va!!!
![]() ![]() ![]()
__________________
LE AVVENTURE DI AL METALLER E CHELA FDM - IL FOTOROMANZO TRASH! When I'm walking a dark road... I am a man who walks alone... |
![]() |
![]() |
![]() |
#17 | |
Senior Member
Iscritto dal: Apr 2003
Messaggi: 16462
|
Quote:
Hai provato la soluzione che ti ho postato tramite l'uso delle puts e gets ?
__________________
MICROSOFT : Violating your privacy is our priority |
|
![]() |
![]() |
![]() |
#18 |
Senior Member
Iscritto dal: Jul 2002
Città: Roma
Messaggi: 806
|
Come hai definito la struttura?
Immagino così: struct persona { char * nome; char * cognome; char * via; char * citta; char * telefono; }; struct persona dati [10]; |
![]() |
![]() |
![]() |
#19 | |
Senior Member
Iscritto dal: Jun 2003
Città: Pianeta Terra
Messaggi: 281
|
Quote:
mi da errore di malloc!!! per favore aiutatemi!!! devo finirlo prima possibile!
__________________
LE AVVENTURE DI AL METALLER E CHELA FDM - IL FOTOROMANZO TRASH! When I'm walking a dark road... I am a man who walks alone... |
|
![]() |
![]() |
![]() |
#20 | |
Senior Member
Iscritto dal: Jun 2003
Città: Pianeta Terra
Messaggi: 281
|
Quote:
sisi esatto così!
__________________
LE AVVENTURE DI AL METALLER E CHELA FDM - IL FOTOROMANZO TRASH! When I'm walking a dark road... I am a man who walks alone... |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:26.