|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Apr 2007
Città: Torino
Messaggi: 95
|
[C] problema confronto stringhe
Ciao a tutti, dovrei implementare questa funzione: char **pos_min(char **begin, char **end) che ritorna il puntatore alla stringa
“minima” (nel senso definito da strcmp()) nel sottovettore begin. . . end. Qualcuno mi può aiutare? Grazie mille |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Innanzitutto hai dichiarato dei puntatori a puntatori a char (char**), quindi con cosa hai a che fare? Con un array di puntatori a char, cioè con un array di stringhe?
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Apr 2007
Città: Torino
Messaggi: 95
|
si esatto. Per esempio se le stringhe che dichiaro in input sono Tom,Chris e David la funzione mi deve restituire in output Chris David Tom
|
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
In output si deve restituire un nuovo array di stringhe che contiene i puntatori alle stringhe. L'array è tale per cui le stringhe sono ordinate. Dovresti quindi: a) Determinare quante stringhe ci sono nella porzione dell'array delimitata da begin e end. Lo calcoli facilmente perché sizeof(char*) ti dice quanto occupa un puntatore. b) Allocare un nuovo array di puntatori a char. c) Usare un algoritmo di ordinamento per ordinare le stringhe. Chiaramente ti conviene impostare il nuovo array con le stringhe così come sono (non ordinate) e quindi ordinare il nuovo array, così non alteri l'array originale! Che algoritmo di ordinamento usare lo devi sapere tu ... non so se ti è stato imposto un algoritmo specifico o se puoi stabilirlo tu. P.S. Domanda: la stringa puntata da 'end' è esclusa o inclusa?
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#5 |
Member
Iscritto dal: Apr 2007
Città: Torino
Messaggi: 95
|
avevo pensato a una cosa del genere
char **pos_min(char **begin, char **end) { char **res=begin; for(begin++; begin<=end; begin++) //if(**begin<**res) res=begin; return res; } con al posto dell' if commentato l' uso di strcmp che però non riesco a fare. Se mi puoi aiutare ti ringrazio Edit: uso poi questa pos_min in un selection sort Ultima modifica di gigippa : 21-05-2007 alle 14:18. |
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
P.S.: dal tuo esempio di prima "Per esempio se le stringhe che dichiaro in input sono Tom,Chris e David la funzione mi deve restituire in output Chris David Tom" avevo capito che volevi ottenere come ritorno un array ordinato. ![]()
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#7 |
Member
Iscritto dal: Apr 2007
Città: Torino
Messaggi: 95
|
Potresti mica scrivermelo in linguaggio C sintatticamente corretto?
Edit: Grazie ma non serve più, ci sono riuscito. Non so proprio come ringraziarti per l' aiuto! Ultima modifica di gigippa : 21-05-2007 alle 14:36. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:41.