Torna indietro   Hardware Upgrade Forum > Software > Programmazione

ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondono completezza e duttilità
ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondono completezza e duttilità
NUC 15 Pro e NUC 15 Pro+ sono i due nuovi mini-PC di casa ASUS pensati per uffici e piccole medie imprese. Compatti, potenti e pieni di porte per la massima flessibilità, le due proposte rispondono in pieno alle esigenze attuali e future grazie a una CPU con grafica integrata, accompagnata da una NPU per la gestione di alcuni compiti AI in locale.
Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint
Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint
Dal palco di Proofpoint Protect 2025 emerge la strategia per estendere la protezione dagli utenti agli agenti IA con il lancio di Satori Agents, nuove soluzioni di governance dei dati e partnership rafforzate che ridisegnano il panorama della cybersecurity
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Dopo alcuni anni di assenza dai cataloghi dei suoi televisori, Hisense riporta sul mercato una proposta OLED che punta tutto sul rapporto qualità prezzo. Hisense 55A85N è un televisore completo e versatile che riesce a convincere anche senza raggiungere le vette di televisori di altra fascia (e altro prezzo)
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


ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondono completezza e duttilità ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondo...
Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint Cybersecurity: email, utenti e agenti IA, la nuo...
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti Hisense A85N: il ritorno all’OLED è convi...
Acer TravelMate P6 14 AI: il Copilot+ PC sotto il chilo per il professionista in movimento Acer TravelMate P6 14 AI: il Copilot+ PC sotto i...
Recensione Borderlands 4, tra divertimento e problemi tecnici Recensione Borderlands 4, tra divertimento e pro...
Imgur blocca gli utenti del Regno Unito:...
ROG Xbox Ally già in consegna: qu...
Ubisoft annuncia Vantage Studios: Assass...
Il solare diventa la prima fonte di elet...
Google Home si rinnova completamente: ar...
Dense Geometry Format (DGF): novit&agrav...
Gemini for Home arriva a ottobre sui dis...
Amazon Smart Air Quality Monitor: a soli...
Mazzata Raspberry Pi, i prezzi aumentano...
Amazon Seconda Mano - Warehouse: extra s...
Una giornata smart tra lago e montagna: ...
Google lancia le nuove Nest Cam con vide...
Sembra Temu ma non è: Amazon sfid...
Svizzera, tassazione dei veicoli elettri...
Una stampante a getto di inchiostro 'lib...
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: 16:41.


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