Torna indietro   Hardware Upgrade Forum > Software > Programmazione

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
Nioh 3: souls-like punitivo e Action RPG
Nioh 3: souls-like punitivo e Action RPG
Nioh 3 aggiorna la formula Team NINJA con aree esplorabili più grandi, due stili di combattimento intercambiabili al volo (Samurai e Ninja) e un sistema di progressione pieno di attività, basi nemiche e sfide legate al Crogiolo. La recensione entra nel dettaglio su combattimento, build, progressione e requisiti PC
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 28-08-2011, 12:43   #1
qwerty86
Senior Member
 
L'Avatar di qwerty86
 
Iscritto dal: Jun 2007
Messaggi: 1232
[C] qsort di array di puntatori a strutture

Salve ragazzi questa cosa mi sta mandando fuori di testa.

Vi allego i codici

Questo è il file : interval.h
Codice:
typedef struct _interval{

	int s;
	int f;
	int len;
}Interval;
file interval.c

Codice:
#include "interval.h"

Interval **readInterval(int n)
{
	Interval **s = (Interval *) malloc(n*sizeof(Interval *));
	int j;

	for(j=0;j<n;j++)
	{
		Interval *i = (Interval *) malloc(sizeof(Interval));

		scanf("%d %d",&i->s,&i->f);
		i->len = i->f-i->s;

		s[j]= i;
	}

	return s;
}

void writeInterval(Interval **s,int n)
{
	int i;

	for(i=0;i<n;i++)
	{
		printf("%d %d %d \n",s[i]->s,s[i]->f,s[i]->len);
	}
}
file : testis.c
Codice:
#include "interval.h"
#include <stdio.h>
#include <stdlib.h>

int cmp(const void *,const void *);

int main()
{
	int n;
	Interval **s;

	scanf("%d",&n);
	s = readInterval(n);

	writeInterval(s,n);

	qsort(s,n,sizeof(Interval *),cmp);
	printf("******\n");
	writeInterval(s,n);

}

int cmp(const void *a,const void *b)
{
	const Interval *i = (const Interval *)a;
	const Interval *j = (const Interval *)b;

	return j->len - i->len;
}
file input.txt
Codice:
5 1 4 2 4 4 5 3 4 1 2
output
Codice:
1 4 3 
2 4 2 
4 5 1 
3 4 1 
1 2 1 
******
3 4 1 
4 5 1 
2 4 2 
1 4 3 
1 2 1
come vede l'ordinamento non è completo.....cos'è che non va?!
__________________
Cpu: Amd 64 X2 5200+ - Mobo:M2N32SLI DELUXE - Ram: Corsair xms2 800 mhz kit 4gb - SK Video: Gaiward GTS250 - Ali : Enermax Liberty 500 Wat - Mast DVD: 2 Nec AD-5170A - Case : Thermaltake Armor+ - Dissipatore: Thermaltake V1 Notebook: Sony Vaio VGN-Fe21M-Pda: Htc Diamond |Il mio sito|Flickr| Stanco del solito forum? Vieni a parlare di fotografia su Fotoni

Ultima modifica di qwerty86 : 28-08-2011 alle 12:44. Motivo: tag
qwerty86 è offline   Rispondi citando il messaggio o parte di esso
Old 30-08-2011, 16:13   #2
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Non posso provare purtroppo , ma potrebbe essere che forse devi cambiare :

Codice:
qsort(s,n,sizeof(Interval *),cmp);
con

Codice:
qsort(*s,n,sizeof(Interval),cmp);
Ciao
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 30-08-2011, 16:31   #3
qwerty86
Senior Member
 
L'Avatar di qwerty86
 
Iscritto dal: Jun 2007
Messaggi: 1232
Quote:
Originariamente inviato da AnonimoVeneziano Guarda i messaggi
Non posso provare purtroppo , ma potrebbe essere che forse devi cambiare :

Codice:
qsort(s,n,sizeof(Interval *),cmp);
con

Codice:
qsort(*s,n,sizeof(Interval),cmp);
Ciao
Grazie per l'interesse ma ho risolto.

Codice:
int cmp(const void *a,const void *b)
{
	const Interval *i = *(const Interval **)a;
	const Interval *j = *(const Interval **)b;

	return j->len - i->len;
}
In rosso è quello che andava aggiunto.
__________________
Cpu: Amd 64 X2 5200+ - Mobo:M2N32SLI DELUXE - Ram: Corsair xms2 800 mhz kit 4gb - SK Video: Gaiward GTS250 - Ali : Enermax Liberty 500 Wat - Mast DVD: 2 Nec AD-5170A - Case : Thermaltake Armor+ - Dissipatore: Thermaltake V1 Notebook: Sony Vaio VGN-Fe21M-Pda: Htc Diamond |Il mio sito|Flickr| Stanco del solito forum? Vieni a parlare di fotografia su Fotoni
qwerty86 è offline   Rispondi citando il messaggio o parte di esso
Old 30-08-2011, 16:35   #4
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Inoltre non credo tu abbia veramente la necessità di utilizzare i doppi puntatori per fare quello che fai, è sufficiente un array normale di elementi (Interval)
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 30-08-2011, 16:38   #5
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Quote:
Originariamente inviato da qwerty86 Guarda i messaggi
Grazie per l'interesse ma ho risolto.

Codice:
int cmp(const void *a,const void *b)
{
	const Interval *i = *(const Interval **)a;
	const Interval *j = *(const Interval **)b;

	return j->len - i->len;
}
In rosso è quello che andava aggiunto.
Beh si anche così va bene, in sostanza il problema è che ordinavi sulla cosa sbagliata visto che ti mancava un livello di dereferenziamento.
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


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...
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto Dark Perk Ergo e Sym provati tra wireless, softw...
SpaceX: Elon Musk torna a parlare dei pr...
G.Skill risarcisce 2,4 milioni di dollar...
Test degli annunci su ChatGPT avviati: '...
TSMC approva investimenti record da quas...
L'IA agentica arriva anche sullo storage...
Euro digitale, il Parlamento UE cambia r...
Alphabet e la sua obbligazione centenari...
L'UE anticipa un intervento per bloccare...
Il Trump Phone esiste ma è molto ...
Frodi deepfake fuori controllo: perch&ea...
Consumano il 30% in meno: arrivano i nuo...
Tesla Semi svela i numeri definitivi: 80...
La Air Force statunitense vieta occhiali...
Wi-Fi Intel e Windows: le novità ...
Dongfeng sbarca 'a casa loro': il nuovo ...
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:49.


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