Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake ha presentato diverse novità per la sua piattaforma legate all'intelligenza artificiale. Quella forse più eclatante è una collaborazione con OpenAI, ma non mancano diverse nuove funzionalità che rendono la piattaforma più flessibile e in grado di rispondere meglio alle esigenze in continuo cambiamento delle aziende
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Con velocità teoriche fino a 11 Gbps, gestione tramite app intelligente e protezione avanzata dei dispositivi, Roamii BE Pro porta il Wi‑Fi 7 tri‑band nelle abitazioni più esigenti. Un sistema Wi-Fi Mesh proposto da MSI allo scopo di garantire agli utenti una rete fluida e continua capace di sostenere streaming 8K, gaming competitivo e le applicazioni moderne più esigenti in termini di banda
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Mate X7 rinnova la sfida nel segmento dei pieghevoli premium puntando su un design ancora più sottile e resistente, unito al ritorno dei processori proprietari della serie Kirin. L'assenza dei servizi Google e del 5G pesa ancora sull'esperienza utente, ma il comparto fotografico e la qualità costruttiva cercano di compensare queste mancanze strutturali con soluzioni ingegneristiche di altissimo livello
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 06-02-2013, 11: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 11:25.
.phoenix è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2013, 11: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, 11: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, 11: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, 11: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, 12: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, 12: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, 12: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 13:09.
.phoenix è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2013, 12: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, 12: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, 12: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, 13: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, 14: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, 14: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, 14: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, 14: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, 14: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, 15: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, 15: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, 15: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 16:02.
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo M...
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti Test in super anteprima di Navimow i220 LiDAR: i...
Ford: l'elettrico genera una perdita di ...
Ayaneo Next 2: la console portatile Wind...
Il WiFi può vederti senza telecam...
Linux sotto assedio: SSHStalker riporta ...
Stellantis: dopo il crollo di venerd&igr...
Combat Liquid 360 HUD: raffreddamento AI...
Tornano le EVO Sessions della Formula E:...
Moltbook, il social network per AI: i po...
Cina: eseguito il test della navicella M...
Mistral, il rivale europeo di OpenAI, in...
Libri piratati, allarme rosso: 722 milio...
Ayaneo svela quasi tutte le specifiche d...
Sony chiude definitivamente con i regist...
Renault Twingo E-Tech Electric sotto i 2...
Auto elettriche, il freddo non fa pi&ugr...
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: 01:53.


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