Torna indietro   Hardware Upgrade Forum > Software > Programmazione

iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
C'è tanta sostanza nel nuovo smartphone della Mela dedicato ai creator digitali. Nuovo telaio in alluminio, sistema di raffreddamento vapor chamber e tre fotocamere da 48 megapixel: non è un semplice smartphone, ma uno studio di produzione digitale on-the-go
Intel Panther Lake: i processori per i notebook del 2026
Intel Panther Lake: i processori per i notebook del 2026
Panther Lake è il nome in codice della prossima generazione di processori Intel Core Ultra, che vedremo al debutto da inizio 2026 nei notebook e nei sistemi desktop più compatti. Nuovi core, nuove GPU e soprattutto una struttura a tile che vede per la prima volta l'utilizzo della tecnologia produttiva Intel 18A: tanta potenza in più, ma senza perdere in efficienza
Intel Xeon 6+: è tempo di Clearwater Forest
Intel Xeon 6+: è tempo di Clearwater Forest
Intel ha annunciato la prossima generazione di processori Xeon dotati di E-Core, quelli per la massima efficienza energetica e densità di elaborazione. Grazie al processo produttivo Intel 18A, i core passano a un massimo di 288 per ogni socket, con aumento della potenza di calcolo e dell'efficienza complessiva.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 06-02-2013, 10:00   #1
.phoenix
Junior Member
 
Iscritto dal: Dec 2012
Messaggi: 15
[C] Selection sort su una struct

Salve
Ho una struct di questo tipo:

Codice:
/*DICHIARAZIONE GLOBALE DELLA STRUCT*/
struct prodotto
{
int codice;
char nome[20];
char utilizzo[20];
int quantita;
float costo;
};

/*DICHIARAZIONE CAMPI DELLA STRUCT*/;
struct prodotto scorta[20]={
 {1, "cacciavite", "Edilizia", 15, 5.99},
 {2, "fontana", "Idraulica", 10, 19.50},
 {3, "avvolgicavo", "Elettrico", 2, 4.99},
 {4, "chiodi", "Utensileria", 50, 0.99},
 {5, "colori", "Pitturazione", 45, 10.00},
 {6, "lavabile", "Pitturazione", 4, 5.49},
 {7, "pennello", "Pitturazione", 2, 1.99},
 {8, "guarnizione", "Idraulica", 100, 0.90},
 {9, "martello", "Edilizia", 20, 2.50},
 {10, "lampada", "Elettrico", 5, 10.00},
 {11, "scalpello", "Utensileria", 3, 2.50},
 {12, "lavabo", "Idraulica", 15, 15.99},
 {13, "presa", "Elettrico", 1, 0.50},
 {14, "tenaglia", "Utensileria", 5, 2.50},
 {15, "sparachiodi", "Edilizia", 6, 20.99},
 {16, "spine", "Elettrico", 25, 0.50},
 {17, "vernice", "Pitturazione", 1, 10.50},
 {18, "spatola", "Edilizia", 8, 2.99},
 {19, "sifone", "Idraulica", 4, 9.50},
 {20, "tubo", "Idraulica", 10, 9.90}};
e dovrei ordinare in ordine alfabetico per il nome usando l'ordinamento per selezione.
Ho sempre fatto selection sort su array di char ma mai su delle struct...potreste aiutarmi?
Grazie


Avevo provato una cosa del genere...
Codice:
 
int i,j;
char *temp;

for(i=0;i<20;i++){
                for(j=0;j<20;j++){
                        if(strcmp(scorta[i].nome,scorta[j].nome)<0)
                            {
                                strcpy(temp,scorta[j].nome);
                                strcpy(scorta[j].nome,scorta[i].nome);
                                strcpy(scorta[i].nome,temp);
                                }
                }
        }
}
ma ovviamente non va

Ultima modifica di .phoenix : 06-02-2013 alle 10:25.
.phoenix è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2013, 10:42   #2
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
Perché copi con strcpy? Ti basta scambiare gli elementi dell'array, anche se si tratta di struct, come faresti su un array con tipi di dati semplici.
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2013, 10:48   #3
.phoenix
Junior Member
 
Iscritto dal: Dec 2012
Messaggi: 15
quindi una cosa del genere?

temp=scorta[j].nome
scorta[j].nome=scorta[i].nome
scorta[i].nome=temp


?
.phoenix è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2013, 10:56   #4
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
Codice:
#include <stdio.h>

typedef struct _prodotto
{
	int codice;
	char nome[20];
	char utilizzo[20];
	int quantita;
	float costo;
} prodotto ;


int main()
{
	int i, j, k;
	char *temp;
	
	prodotto prodTemp;

	prodotto scorta[20] = 
	{
		{1, "cacciavite", "Edilizia", 15, 5.99},
		{2, "fontana", "Idraulica", 10, 19.50},
		{3, "avvolgicavo", "Elettrico", 2, 4.99},
		{4, "chiodi", "Utensileria", 50, 0.99},
		{5, "colori", "Pitturazione", 45, 10.00},
		{6, "lavabile", "Pitturazione", 4, 5.49},
		{7, "pennello", "Pitturazione", 2, 1.99},
		{8, "guarnizione", "Idraulica", 100, 0.90},
		{9, "martello", "Edilizia", 20, 2.50},
		{10, "lampada", "Elettrico", 5, 10.00},
		{11, "scalpello", "Utensileria", 3, 2.50},
		{12, "lavabo", "Idraulica", 15, 15.99},
		{13, "presa", "Elettrico", 1, 0.50},
		{14, "tenaglia", "Utensileria", 5, 2.50},
		{15, "sparachiodi", "Edilizia", 6, 20.99},
		{16, "spine", "Elettrico", 25, 0.50},
		{17, "vernice", "Pitturazione", 1, 10.50},
		{18, "spatola", "Edilizia", 8, 2.99},
		{19, "sifone", "Idraulica", 4, 9.50},
		{20, "tubo", "Idraulica", 10, 9.90}
	};

	for(i = 0; i < 20; i++)
	{
		for(j = 0; j < 20; j++)
		{
			if(strcmp(scorta[i].nome, scorta[j].nome) < 0)
			{
				prodTemp = scorta[j];
				scorta[j] = scorta[i];
				scorta[i] = prodTemp;				
			}
		}
	}
	
	printf("\n");
	for(i = 0; i < 20; i++)
	{
		printf("Nome: %s\n", scorta[i].nome);
	}
	printf("\n");
		
	return 0;
}
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2013, 10:58   #5
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
Quote:
Originariamente inviato da .phoenix Guarda i messaggi
quindi una cosa del genere?

temp=scorta[j].nome
scorta[j].nome=scorta[i].nome
scorta[i].nome=temp


?
No, vedi codice postato sopra. Puoi scambiare direttamente gli elementi dell'array(anche se sono struct):

Codice:
	prodotto prodTemp;
...
...
...

	prodTemp = scorta[j];
	scorta[j] = scorta[i];
	scorta[i] = prodTemp;
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2013, 11:02   #6
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515


Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2013, 11:13   #7
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
In realta' non sarebbe possibile, in C, effettuare l'assegnamento di una struttura in questo modo. E' possibile in C++, non in C
__________________
In God we trust; all others bring data
sottovento è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2013, 11:37   #8
.phoenix
Junior Member
 
Iscritto dal: Dec 2012
Messaggi: 15
grazie mille vincenzo

Quote:
Originariamente inviato da sottovento Guarda i messaggi
In realta' non sarebbe possibile, in C, effettuare l'assegnamento di una struttura in questo modo. E' possibile in C++, non in C
e come mai funziona?

Ultima modifica di .phoenix : 06-02-2013 alle 12:09.
.phoenix è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2013, 11:39   #9
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
Quote:
Originariamente inviato da sottovento Guarda i messaggi
In realta' non sarebbe possibile, in C, effettuare l'assegnamento di una struttura in questo modo. E' possibile in C++, non in C
Adesso si. All'inizio no ma da C99(credo) in poi si.
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2013, 11:48   #10
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Quote:
Originariamente inviato da Vincenzo1968 Guarda i messaggi
Adesso si. All'inizio no ma da C99(credo) in poi si.
Stai dicendo che sono vecchio? E poi, mi dai del tu?

No, non lo sapevo. Quindi se var1 e var2 sono due variabili dello stesso tipo strutturato

var1 = var2

copia tutti i campi, vettori inclusi. E' corretto?
__________________
In God we trust; all others bring data
sottovento è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2013, 11:59   #11
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
Quote:
Originariamente inviato da sottovento Guarda i messaggi
Stai dicendo che sono vecchio? E poi, mi dai del tu?

No, non lo sapevo. Quindi se var1 e var2 sono due variabili dello stesso tipo strutturato

var1 = var2

copia tutti i campi, vettori inclusi. E' corretto?


Non ricordo più dove l'ho letto. Come al solito quando ti serve una cosa non la trovi mai. Ma il codice funziona(ho compilato con gcc non con g++) dunque i miei ricordi dovrebbere essere esatti. Compila e funziona anche con Visual Studio(con l'opzione "compile as C code").

Se copia anche i vettori onestamente non lo so, bisognerebbe provare. Ma credo di si. In fondo nome[20] è un vettore di char, no?

Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2013, 12:08   #12
.phoenix
Junior Member
 
Iscritto dal: Dec 2012
Messaggi: 15
ora avrei un altro problemino però...
ho quest'altra funzione che permette di stampare a video i prodotti in base al campo "utilizzo"
Codice:
/*FUNCTION PER LA RICERCA DEI PRODOTTI DIVISI PER UTILIZZO*/
void cerca_utilizzo()
{
    int z, c;
          scanf("%d",&z);
          if(z==1)
           {
           for (c=0;c<20;c++)
                  {
                      if(strcmp(scorta[c].utilizzo,"Edilizia")==0)/*CONFRONTA TUTTI GLI ELEMENTI DEL CAMPO utilizzo CON LA STRINGA*/
                      {
                          printf("\n\n\t%s",scorta[c].nome);/*VISUALIZZA TUTTI I PRODOTTI DELLO STESSO CAMPO utilizzo*/
                          

           }

           else if(z==2)
           {
                  for (c=0;c<20;c++)
                  {
                      if(strcmp(scorta[c].utilizzo,"Idraulica")==0)
                      {
                          printf("\n\n\t%s", scorta[c].nome);
                      }
                  }
            printf("\n");

           }
           
        ..........................

           }
           else if (z==6)
           return 0;/*TERMINA LA FUNCTION*/


system("PAUSE");

}
ora vorrei implementare la funzione dell'ordinamento per ogni campo "utilizzo"
ho gia provato a mettere la funzione della selezione ma non funziona...
.phoenix è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2013, 13:01   #13
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
Non basta sostituire i confronti utilizzando il campo utilizzo anziché nome?

Codice:
	if(strcmp(scorta[i].utilizzo, scorta[j].utilizzo) < 0)
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2013, 13:08   #14
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
si, basta:

Codice:
	printf("\n");
	for(i = 0; i < 20; i++)
	{
		printf("Nome: %s\nUtilizzo: %s\n\n", scorta[i].nome, scorta[i].utilizzo);
	}
	printf("\n");
Output:
Codice:
vincenzo@Ubuntu12-10-AMD64:~/Contest19/Prova$ ./sortstruct

Nome: cacciavite
Utilizzo: Edilizia

Nome: martello
Utilizzo: Edilizia

Nome: sparachiodi
Utilizzo: Edilizia

Nome: spatola
Utilizzo: Edilizia

Nome: presa
Utilizzo: Elettrico

Nome: avvolgicavo
Utilizzo: Elettrico

Nome: spine
Utilizzo: Elettrico

Nome: lampada
Utilizzo: Elettrico

Nome: guarnizione
Utilizzo: Idraulica

Nome: lavabo
Utilizzo: Idraulica

Nome: fontana
Utilizzo: Idraulica

Nome: sifone
Utilizzo: Idraulica

Nome: tubo
Utilizzo: Idraulica

Nome: vernice
Utilizzo: Pitturazione

Nome: lavabile
Utilizzo: Pitturazione

Nome: pennello
Utilizzo: Pitturazione

Nome: colori
Utilizzo: Pitturazione

Nome: chiodi
Utilizzo: Utensileria

Nome: scalpello
Utilizzo: Utensileria

Nome: tenaglia
Utilizzo: Utensileria
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2013, 13:13   #15
.phoenix
Junior Member
 
Iscritto dal: Dec 2012
Messaggi: 15
Quote:
Originariamente inviato da Vincenzo1968 Guarda i messaggi
Non basta sostituire i confronti utilizzando il campo utilizzo anziché nome?

Codice:
	if(strcmp(scorta[i].utilizzo, scorta[j].utilizzo) < 0)
Così mi mette in ordine alfabetico il campo utilizzo...e non voglio questo

Praticamente nel programma dopo aver selezionato l'utilizzo (per esempio Edilizia) devo ordinare in ordine alfabetico i prodotti presente nel campo utilizzo
Ora lascia stare che nella struct sono gia in ordine alfabetico (sono una testa di cavolo, me lo volevo scansare il sort)...dovrei implementare la selection sort nella funzione che ricerca i prodotti per settore...
.phoenix è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2013, 13:17   #16
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
Nientedimeno puoi ordinare in base a utlizzo e nome:

Codice:
#include <stdio.h>

typedef struct _prodotto
{
	int codice;
	char nome[20];
	char utilizzo[20];
	int quantita;
	float costo;
} prodotto ;


int main()
{
	int i, j;
	int bEqual;
	
	prodotto prodTemp;

	prodotto scorta[20] = 
	{
		{1, "cacciavite", "Edilizia", 15, 5.99},
		{2, "fontana", "Idraulica", 10, 19.50},
		{3, "avvolgicavo", "Elettrico", 2, 4.99},
		{4, "chiodi", "Utensileria", 50, 0.99},
		{5, "colori", "Pitturazione", 45, 10.00},
		{6, "lavabile", "Pitturazione", 4, 5.49},
		{7, "pennello", "Pitturazione", 2, 1.99},
		{8, "guarnizione", "Idraulica", 100, 0.90},
		{9, "martello", "Edilizia", 20, 2.50},
		{10, "lampada", "Elettrico", 5, 10.00},
		{11, "scalpello", "Utensileria", 3, 2.50},
		{12, "lavabo", "Idraulica", 15, 15.99},
		{13, "presa", "Elettrico", 1, 0.50},
		{14, "tenaglia", "Utensileria", 5, 2.50},
		{15, "sparachiodi", "Edilizia", 6, 20.99},
		{16, "spine", "Elettrico", 25, 0.50},
		{17, "vernice", "Pitturazione", 1, 10.50},
		{18, "spatola", "Edilizia", 8, 2.99},
		{19, "sifone", "Idraulica", 4, 9.50},
		{20, "tubo", "Idraulica", 10, 9.90}
	};

	for(i = 0; i < 20; i++)
	{
		for(j = 0; j < 20; j++)
		{
			bEqual = strcmp(scorta[i].utilizzo, scorta[j].utilizzo);
			
			if( bEqual < 0 )
			{
				prodTemp = scorta[j];
				scorta[j] = scorta[i];
				scorta[i] = prodTemp;				
			}
			else if ( bEqual == 0 )
			{
				if(strcmp(scorta[i].nome, scorta[j].nome) < 0)
				{
					prodTemp = scorta[j];
					scorta[j] = scorta[i];
					scorta[i] = prodTemp;				
				}				
			}
		}
	}
	
	printf("\n");
	for(i = 0; i < 20; i++)
	{
		printf("Nome: %s\nUtilizzo: %s\n\n", scorta[i].nome, scorta[i].utilizzo);
	}
	printf("\n");
		
	return 0;
}

Output:
Codice:
vincenzo@Ubuntu12-10-AMD64:~/Contest19/Prova$ gcc -O3 sortstruct.c -o sortstruct
vincenzo@Ubuntu12-10-AMD64:~/Contest19/Prova$ ./sortstruct

Nome: cacciavite
Utilizzo: Edilizia

Nome: martello
Utilizzo: Edilizia

Nome: sparachiodi
Utilizzo: Edilizia

Nome: spatola
Utilizzo: Edilizia

Nome: avvolgicavo
Utilizzo: Elettrico

Nome: lampada
Utilizzo: Elettrico

Nome: presa
Utilizzo: Elettrico

Nome: spine
Utilizzo: Elettrico

Nome: fontana
Utilizzo: Idraulica

Nome: guarnizione
Utilizzo: Idraulica

Nome: lavabo
Utilizzo: Idraulica

Nome: sifone
Utilizzo: Idraulica

Nome: tubo
Utilizzo: Idraulica

Nome: colori
Utilizzo: Pitturazione

Nome: lavabile
Utilizzo: Pitturazione

Nome: pennello
Utilizzo: Pitturazione

Nome: vernice
Utilizzo: Pitturazione

Nome: chiodi
Utilizzo: Utensileria

Nome: scalpello
Utilizzo: Utensileria

Nome: tenaglia
Utilizzo: Utensileria
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2013, 13:21   #17
.phoenix
Junior Member
 
Iscritto dal: Dec 2012
Messaggi: 15
Vincenzo1968 grazie del tempo che mi stai dedicando
ma penso che questi ulteriori post non potranno servirmi

Ora provo a spiegare meglio
Nel programma ho questo menu:
Premi 1 per visualizzare i prodotti per l'EDILIZIA
Premi 2 per visualizzare i prodotti per l'IDRAULICA
...............
ecc....


Ora io premo 1
Devo visualizzare i prodotti dell'edilizia in ordine alfabetico, ma solo del campo Edilizia, non di tutti gli altri

Spero di essermi spiegato bene ora
Grazie ancora
.phoenix è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2013, 14:02   #18
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
Quote:
Originariamente inviato da .phoenix Guarda i messaggi
Vincenzo1968 grazie del tempo che mi stai dedicando
ma penso che questi ulteriori post non potranno servirmi

Ora provo a spiegare meglio
Nel programma ho questo menu:
Premi 1 per visualizzare i prodotti per l'EDILIZIA
Premi 2 per visualizzare i prodotti per l'IDRAULICA
...............
ecc....


Ora io premo 1
Devo visualizzare i prodotti dell'edilizia in ordine alfabetico, ma solo del campo Edilizia, non di tutti gli altri

Spero di essermi spiegato bene ora
Grazie ancora
Allora prendi la seconda versione che ho postato. L'array viene ordinato in base a quello che ti serve: i nomi di "edilizia", per esempio, li mette in ordine alfabetico.
Per fargli stampare solo quelli relativi a "edilizia" basta che fai un ciclo for dove, prima della printf, controlli con strcmp se il campo "utilizzo" corrisponde a "edilizia"; se corrisponde(strcmp restituisce zero) lo stampi altrimenti no.

Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2013, 14:15   #19
.phoenix
Junior Member
 
Iscritto dal: Dec 2012
Messaggi: 15
Quote:
Originariamente inviato da Vincenzo1968 Guarda i messaggi
Allora prendi la seconda versione che ho postato. L'array viene ordinato in base a quello che ti serve: i nomi di "edilizia", per esempio, li mette in ordine alfabetico.
Per fargli stampare solo quelli relativi a "edilizia" basta che fai un ciclo for dove, prima della printf, controlli con strcmp se il campo "utilizzo" corrisponde a "edilizia"; se corrisponde(strcmp restituisce zero) lo stampi altrimenti no.


cioè...sarebbe così in pratica...

Codice:
if(z==1)
           {
           for (c=0;c<20;c++)
                  {
                      if(strcmp(scorta[c].utilizzo,"Edilizia")==0)
                      {
                          for(i=0;i<20;i++)
                                {
                                     for(j = 0; j < 20; j++)
		{
			bEqual = strcmp(scorta[i].utilizzo, scorta[j].utilizzo);
			
			if( bEqual < 0 )
			{
				prodTemp = scorta[j];
				scorta[j] = scorta[i];
				scorta[i] = prodTemp;				
			}
			else if ( bEqual == 0 )
			{
				if(strcmp(scorta[i].nome, scorta[j].nome) < 0)
				{
					prodTemp = scorta[j];
					scorta[j] = scorta[i];
					scorta[i] = prodTemp;				
				}				
			}
		}
	}
	
	printf("\n");
	for(i = 0; i < 20; i++)
	{
		printf("%s", scorta[i].nome);
	}
	printf("\n");
		
	return 0;
}
.phoenix è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2013, 14:28   #20
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515


Codice:
#include <stdio.h>

typedef struct _prodotto
{
	int codice;
	char nome[20];
	char utilizzo[20];
	int quantita;
	float costo;
} prodotto ;

void printUtilizzo(prodotto pArrayProdotti[], int sizeArray, const char *szUtilizzo)
{
	int x;
	
	for (x = 0; x < sizeArray; x++ )
	{
		if ( strcmp(szUtilizzo, pArrayProdotti[x].utilizzo) == 0 )
			printf("Prodotto: %s\n", pArrayProdotti[x].nome);
	}
}

int main()
{
	int i, j;
	int bEqual;
	
	prodotto prodTemp;

	prodotto scorta[20] = 
	{
		{1, "cacciavite", "Edilizia", 15, 5.99},
		{2, "fontana", "Idraulica", 10, 19.50},
		{3, "avvolgicavo", "Elettrico", 2, 4.99},
		{4, "chiodi", "Utensileria", 50, 0.99},
		{5, "colori", "Pitturazione", 45, 10.00},
		{6, "lavabile", "Pitturazione", 4, 5.49},
		{7, "pennello", "Pitturazione", 2, 1.99},
		{8, "guarnizione", "Idraulica", 100, 0.90},
		{9, "martello", "Edilizia", 20, 2.50},
		{10, "lampada", "Elettrico", 5, 10.00},
		{11, "scalpello", "Utensileria", 3, 2.50},
		{12, "lavabo", "Idraulica", 15, 15.99},
		{13, "presa", "Elettrico", 1, 0.50},
		{14, "tenaglia", "Utensileria", 5, 2.50},
		{15, "sparachiodi", "Edilizia", 6, 20.99},
		{16, "spine", "Elettrico", 25, 0.50},
		{17, "vernice", "Pitturazione", 1, 10.50},
		{18, "spatola", "Edilizia", 8, 2.99},
		{19, "sifone", "Idraulica", 4, 9.50},
		{20, "tubo", "Idraulica", 10, 9.90}
	};

	for(i = 0; i < 20; i++)
	{
		for(j = 0; j < 20; j++)
		{
			bEqual = strcmp(scorta[i].utilizzo, scorta[j].utilizzo);
			
			if( bEqual < 0 )
			{
				prodTemp = scorta[j];
				scorta[j] = scorta[i];
				scorta[i] = prodTemp;				
			}
			else if ( bEqual == 0 )
			{
				if(strcmp(scorta[i].nome, scorta[j].nome) < 0)
				{
					prodTemp = scorta[j];
					scorta[j] = scorta[i];
					scorta[i] = prodTemp;				
				}				
			}
		}
	}
	
	printf("\n");
	
	printf("Stampo i prodotti della categoria \"Edilizia\":\n");
	printUtilizzo(scorta, 20, "Edilizia");
	
	/*
	for(i = 0; i < 20; i++)
	{
		printf("Nome: %s\nUtilizzo: %s\n\n", scorta[i].nome, scorta[i].utilizzo);
	}
	*/
	printf("\n");
		
	return 0;
}

Ultima modifica di Vincenzo1968 : 06-02-2013 alle 15:02.
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile iPhone 17 Pro: più di uno smartphone. &Eg...
Intel Panther Lake: i processori per i notebook del 2026 Intel Panther Lake: i processori per i notebook ...
Intel Xeon 6+: è tempo di Clearwater Forest Intel Xeon 6+: è tempo di Clearwater Fore...
4K a 160Hz o Full HD a 320Hz? Titan Army P2712V, a un prezzo molto basso 4K a 160Hz o Full HD a 320Hz? Titan Army P2712V,...
Recensione Google Pixel Watch 4: basta sollevarlo e si ha Gemini sempre al polso Recensione Google Pixel Watch 4: basta sollevarl...
La Ferrari Elettrica non è la cau...
Ricarica da record: Zeekr supera i 1.300...
Un 'capezzolo' con feedback aptico al po...
Porsche Taycan Rush a Misano: prima al v...
Installare Windows 11 senza account Micr...
Cina, nuove regole per le auto elettrich...
OPPO A6 Pro arriva in Italia a 299,99 eu...
Black Myth: Wukong, oggi un maxi aggiorn...
Nomad in missione senza alcun controllo ...
Apple prepara il chip H3 e nuovi AirPods...
Battlefield 6 è uno spettacolo an...
Hyundai Ioniq 9, prima prova: viaggiare ...
Allarme blackout in Spagna: la rete elet...
MindsEye, rivolta dei dipendenti contro ...
In Cina Xiaomi SU7 Ultra prende fuoco do...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 15:30.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v