|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jun 2009
Messaggi: 5535
|
[C] Insertion sort in struttura array strighe
Avendo una struct
contenente ID,nome e cognome (3 stringhe) dovrei ordinarla in modo da avere a ogni inserimento la struttura ordinata,per ID Codice:
void ordina( struct array *b,struct array *ins, int n ) { struct array temp[N]; int i;int j=0; for(i=0;i<n;i++){ while(b[i].id>ins[i].id){ strcpy(temp[i].id,b[i].id); strcpy(temp[i].nome,b[i].nome); strcpy(temp[i].cognome,b[i].cognome); i++;}} Grazie in anticipo Ultima modifica di gabmac2 : 04-05-2010 alle 14:41. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jun 2009
Messaggi: 5535
|
nessuno?
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Mar 2006
Città: Milano
Messaggi: 832
|
non ho capito bene la tua richiesta... devi ordinare un array di struct in base all'id?
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jun 2009
Messaggi: 5535
|
intanto grazie,si esattamente
ho un array di struct con i 3 campi char e dovrei ordinarlo per id |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
io continuo a propagandare l'uso del C++:
Codice:
#include <iostream> #include <string> #include <algorithm> using namespace std; int main() { const size_t cstr = 6; string astr[cstr] = { "ciao", "come", "stai", "bene", "grazie", "prego", }; for (int i = 1; i < cstr; i++) { string str = astr[i]; int j = i - 1; while (astr[j] > str) { astr[j + 1] = astr[j]; if (--j < 0) { break; } } astr[j + 1] = str; }; for_each(astr, astr + cstr, [] (string str) { cout << str << endl; }); return 0; } |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Jun 2009
Messaggi: 5535
|
be grazie mille,uso c "obbligatoriamente" per un esercitazione
Però andiamo per passi,dovrei a ogni inserimento ordinare la struttura,che deve rimanere sempre ovviamente ordinata il codice che hai postato mi ha confermato le idee che avevo per quanto riguarda l' algoritmo,stato provando un insertion sort,ma sono ancora bloccato Codice:
void insertion_sort(struct studarray *x, int n) { int i, j;struct studarray app; for (i=1; i<n; i++) { app = x[i+1]; j = i-1; while (j>=0 && (strcmp(x[j].id,---->app[i+1]<----.id)>0)){ x[j+1] = x[j]; j--; } x[j+1] = app; } return; } |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Ma lo scopo dell'esercitazione e' scrivere un insertion sort?
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Jun 2009
Messaggi: 5535
|
si
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:57.