Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere?
Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere?
HONOR Magic V6 è arrivato in Italia a 2.299,90 euro con una promessa precisa: unire 4 mm di spessore da aperto (8,75 mm chiuso nel modello White, 9 mm negli altri colori) a una batteria da 6.660 mAh, la più capiente mai vista su un pieghevole. Lo abbiamo usato per oltre una settimana in versione Red 16/512 GB per capire se lo Snapdragon 8 Elite Gen 5 tiene testa alla concorrenza anche fuori dai benchmark ufficiali
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7 punta su un display ampio e fluido, una batteria capace di accompagnare l'uso quotidiano senza ansie da ricarica e un prezzo accessibile, a partire da 179,90 euro per la versione con 64 GB di storage. Lo Snapdragon 6s 4G Gen 2 e i 4 GB di RAM della configurazione più diffusa frenano però chi cerca reattività e multitasking spinto: ecco il bilancio dopo due settimane di prova diretta
Peugeot Polygon Concept: ecco il futuro delle utilitarie
Peugeot Polygon Concept: ecco il futuro delle utilitarie
Polygon è la concept car di Peugeot che mostra il futuro delle soluzioni del segmento B: tra design compatti e innovativi affiancati da dimensioni compatte uno scherzo dalla manovrabilità incredibile per le manovre a bassa velocità
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


Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere? Recensione HONOR Magic V6: spessore record e sup...
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni Redmi Pad 2 9.7: ampio display, economico e peso...
Peugeot Polygon Concept: ecco il futuro delle utilitarie Peugeot Polygon Concept: ecco il futuro delle ut...
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione Reno16 Pro: il compatto di OPPO punta su fotocam...
 Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco Hisense 55U7SE: tuttofare e accessibile, il Min...
SK Hynix debutta a Wall Street con una r...
QuTech annuncia Tuna-17, un processore q...
Chat Control: il Parlamento europeo viet...
vivo Watch GT 2: stile, salute e autonom...
Il fix di Microsoft Defender è pe...
SentinelOne integra Prompt Security con ...
Ha fotografato Giove con una Game Boy Ca...
Sony RX10 V: tornano le fotocamere bridg...
OpenAI lancia ChatGPT Lavoro: l'agente c...
GPT-5.6 Sol 'asfalta' Claude Fable 5: Op...
Netflix ha ucciso la TV coi canali, ora ...
Kyndryl estende i servizi per il cloud s...
Addio allo scalino delle fotocamere? Una...
"Il mio piccolo sporco segreto"...
Instagram e Facebook sotto accusa: secon...
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: 20:35.


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