Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Ordinamento per inserimento struct
Forum - C/C++ - Ordinamento per inserimento struct

Avatar
magna.tutto (Normal User)
Newbie


Messaggi: 3
Iscritto: 07/06/2013

Segnala al moderatore
Postato alle 15:54
Venerdė, 07/06/2013
Salve a tutti
Ho da finire un progetto e mi manca quest'ultima parte...
In pratica ho una ferramenta e devo gestire il magazzino
Ho tre punti da svolgere:
1. acquistare un prodotto (fatto)
2. visualizzare i prodotti in esaurimento (fatto)
3. visaulizzare in ordine alfabetico i prodotti in base al loro settore di utilizzo (da fare)

Ho questa struct cosė dichiarata:
Codice sorgente - presumibilmente C++

  1. typedef struct
  2. {
  3. int codice;
  4. char nome[20];
  5. char utilizzo[20];
  6. int quantita;
  7. float costo;
  8. } magazzino;
  9.  
  10.  magazzino scorta[20]={
  11.  {1, "martello", "Edilizia", 15, 2.99},
  12.  {2, "tubo", "Idraulica", 10, 1.50},
  13.  {3, "avvolgicavo", "Elettrico", 2, 4.99},
  14.  {4, "chiodi", "Utensileria", 50, 0.99},
  15.  {5, "colori", "Pitturazione", 45, 1.00},
  16.  {6, "vernice", "Pitturazione", 4, 10.49},
  17.  {7, "pennello", "Pitturazione", 2, 1.99},
  18.  {8, "sifone", "Idraulica", 10, 4.90},
  19.  {9, "cacciavite", "Edilizia", 20, 2.50},
  20.  {10, "lampada", "Elettrico", 5, 10.00},
  21.  {11, "scalpello", "Utensileria", 3, 2.50},
  22.  {12, "lavabo", "Idraulica", 15, 15.99},
  23.  {13, "presa", "Elettrico", 1, 0.50},
  24.  {14, "tenaglia", "Utensileria", 5, 2.50},
  25.  {15, "spatola", "Edilizia", 6, 2.99},
  26.  {16, "spine", "Elettrico", 25, 0.50},
  27.  {17, "lavabile", "Pitturazione", 1, 10.50},
  28.  {18, "calce", "Edilizia", 8, 2.99},
  29.  {19, "guarnizione", "Idraulica", 4, 9.50},
  30.  {20, "fontana", "Idraulica", 10, 9.90}};



In pratica devo visualizzare in ordine alfabetico i prodotti divisi per "utilizzo" (Edilizia, Elettrico,....)
Devo usare l'ordinamento per inserimento ma non so da dove iniziare 8-|
chi mi aiuta?:k:

Ultima modifica effettuata da magna.tutto il 07/06/2013 alle 15:55
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 17:39
Venerdė, 07/06/2013
Implementa l'insertion sort. http://www.programmingsimplified.com/c/source-code/c-progr ...

Poi per il confronto tra stringhe usa strcmp. http://www.cplusplus.com/reference/cstring/strcmp/


Il mio blog: https://piero.dev
PM Quote
Avatar
magna.tutto (Normal User)
Newbie


Messaggi: 3
Iscritto: 07/06/2013

Segnala al moderatore
Postato alle 11:46
Lunedė, 10/06/2013
quindi dovrebbe essere una cosa del genere...

Codice sorgente - presumibilmente C/C++

  1. {
  2.     int i,j,b;
  3.     magazzino prodTemp;
  4.     for(i = 0; i < 20; i++)
  5.         {
  6.                 for(j = 0; j < 20; j++)
  7.                 {
  8.                         b = strcmp(scorta[i].utilizzo, scorta[j].utilizzo);
  9.  
  10.                         if( b < 0 )
  11.                         {
  12.                                 prodTemp = scorta[j];
  13.                                 scorta[j] = scorta[i];
  14.                                 scorta[i] = prodTemp;
  15.                         }
  16.                         else if ( b == 0 )
  17.                         {
  18.                                 if(strcmp(scorta[i].nome, scorta[j].nome) < 0)
  19.                                 {
  20.                                         prodTemp = scorta[j];
  21.                                         scorta[j] = scorta[i];
  22.                                         scorta[i] = prodTemp;
  23.                                 }
  24.                         }
  25.                 }
  26.         }
  27.  
  28.         printf("\n");
  29.         for(i = 0; i < 20; i++)
  30.         {
  31.                 printf("Nome: %s\nUtilizzo: %s\n\n", scorta[i].nome, scorta[i].utilizzo);
  32.         }
  33. }


Ultima modifica effettuata da magna.tutto il 10/06/2013 alle 11:46
PM Quote