[gelöst]qsort() und struct übegeben

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
debianix
Beiträge: 172
Registriert: 01.02.2012 20:24:02

[gelöst]qsort() und struct übegeben

Beitrag von debianix » 08.01.2014 06:18:26

Hi! Ich lerne gerade C und habe ein Problem bezüglich qsort und einem struct.

Folgendes funktioniert:

Code: Alles auswählen

int vgl_werte_abst(const void* wert_a, const void* wert_b) {
	int a = *(int*) wert_a;
	int b = *(int*) wert_b;
	return (b - a);

	qsort(werte, 7, sizeof(int), vgl_werte_abst);

	puts("\nDas sind die sortierten Wertungen:");
	for (i = 0; i < 7; i++) {
		printf("%i\n",werte[i]);
	}
Aber wie übergebe ich ein struct - das habe ich probiert - Funktioniert aber leider NICHT:

Code: Alles auswählen

typedef struct {
	int breite;
	int hoehe;
} rechteck;

int vgl_flaechen(const void*a, const void*b) {
	rechteck *ra = (rechteck*) a;
	rechteck *rb = (rechteck*) b;
	int area_a = (ra->breite * ra->hoehe);
	int area_b = (rb->breite * rb->hoehe);
	return (area_a - area_b);
}
//Ab hier "nur" noch wild probiert  ;)  !
rechteck reck = { {100, 200},{200,300} };
	qsort(reck, 2, sizeof(rechteck), vgl_flaechen);
	puts("\nDas sind die sortierten Flaechen:");
	for(i=0;i<2;i++){
		printf("%s",reck);
	}
Vielen Dank schon jetzt für eure Hilfe!
Zuletzt geändert von debianix am 10.01.2014 15:53:34, insgesamt 1-mal geändert.
http://linuxundich.de/ - Blog über Ubuntu, Linux, Android und IT
http://www.321linux.com/ - Dein Linux Blog. Tipps, Tricks und News zu Linux.
http://www.wissensmanufaktur.net/ - Wirtschaftsforschung und Gesellschaftspolitik.

uname
Beiträge: 12403
Registriert: 03.06.2008 09:33:02

Re: qsort() und struct übegeben

Beitrag von uname » 08.01.2014 07:29:16

Ich glaube ich habe seit 10 Jahren kein C mehr programmiert. Aber gibt es Gründe irgendwelche Zeiger zu übergeben und dann das ganze Zeug zu casten? Vielleicht liegt dort irgendwo der Fehler.

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Re: qsort() und struct übegeben

Beitrag von peschmae » 08.01.2014 08:25:36

Schlauerweise postest du hier jeweils komplette Beispiele mit main() und includes. Das hier geht:

Code: Alles auswählen

#include <stdlib.h>
#include <stdio.h>
//...

int main()
{
   rechteck reck[] = { {100, 200},{200,300} };
   qsort(reck, 2, sizeof(rechteck), vgl_flaechen);
   printf("Das sind die sortierten Flaechen:\n");
   for(int i = 0; i < 2; i++){
      printf("%d %d\n", reck[i].breite, reck[i].hoehe);
   }
   return 0;
}
Was noch fehlte bei dir: reck ist ein Array, also reck[] und in der printf-Schleife willst du ints ausgeben, der weiss ja nicht von selber wie ein Rechteck in einen String zu verwandeln ist.

MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

Benutzeravatar
Meillo
Moderator
Beiträge: 9238
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: qsort() und struct übegeben

Beitrag von Meillo » 08.01.2014 10:37:46

uname hat geschrieben:Ich glaube ich habe seit 10 Jahren kein C mehr programmiert. Aber gibt es Gründe irgendwelche Zeiger zu übergeben und dann das ganze Zeug zu casten? Vielleicht liegt dort irgendwo der Fehler.
Das stimmt schon alles.

Peschmae hat recht. Das Problem lag gar nicht am Struct oder dem qsort(), sondern nur am Beiwerk.
Use ed once in a while!

debianix
Beiträge: 172
Registriert: 01.02.2012 20:24:02

Re: qsort() und struct übegeben

Beitrag von debianix » 08.01.2014 13:10:49

peschmae hat geschrieben:Schlauerweise postest du hier jeweils komplette Beispiele mit main() und includes. Das hier geht:
Sorry - stimmt ist besser :oops: Deinen Code teste ich heute Abend aus - DANKE
http://linuxundich.de/ - Blog über Ubuntu, Linux, Android und IT
http://www.321linux.com/ - Dein Linux Blog. Tipps, Tricks und News zu Linux.
http://www.wissensmanufaktur.net/ - Wirtschaftsforschung und Gesellschaftspolitik.

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Re: qsort() und struct übegeben

Beitrag von peschmae » 08.01.2014 16:01:21

Kein Problem, andere Leute sind da viel schlimmer. ;)

MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

debianix
Beiträge: 172
Registriert: 01.02.2012 20:24:02

Re: qsort() und struct übegeben

Beitrag von debianix » 10.01.2014 15:51:59

Also Danke nochmal, der Hinweis von " peschmae " hat perfekt gepasst :THX:
http://linuxundich.de/ - Blog über Ubuntu, Linux, Android und IT
http://www.321linux.com/ - Dein Linux Blog. Tipps, Tricks und News zu Linux.
http://www.wissensmanufaktur.net/ - Wirtschaftsforschung und Gesellschaftspolitik.

Antworten