array sortieren

mimita

Mitglied
Hallo :)

Ich habe in meinem Programm ein Array mit insgesamt 100 Werten, das ungefähr so aussieht:

Liste = [i ] [3]

1 {5 0 0}
2 {0 0 1}
3 {3 0 2}
....
16 {0 1 6}
17 {4 1 7}
......

Die erste Spalte ist dabei ein Wert, die zweite ist die Reihen- und die dritte die Spaltennummer in einem 10x10 Grid

Die Werte der ersten Spalte möchte ich nun von klein (0) bis groß (maximal 8) sortieren, die Positionsmarker sollen natürlich mitsortiert werden, um die Position weiter genau bestimmen zu können. Am Ende soll es so aussehen:

{0 0 1}
{0 1 6}
{3 0 2}
{4 1 5}
{5 0 0}
......

Das geht bestimmt über qsort, aber aus der Borland-Builder Hilfe werde ich nicht schlau.

Ich sollte vielleicht dazu sagen, dass ich absoluter anfänger bin

Gruß,
mimita
 
Hi.

Du mußt erstmal eine Vergleichsfunktion schreiben, die von 2 Elementen deines Arrays bestimmt ob das erste kleiner, gleich oder größer als das zweite Element ist:
C:
int comp_3(const void *v1, const void *v2) {
  int* a = (int*)v1;
  int* b = (int*)v2;

  if (x[0] != y[0]) return x[0] - y[0];
  else return x[1] - y[1];
}
Dann mußt du qsort damit aufrufen.

Gruß
 
Danke erstmal!

Allerdings hab ich gleich ein Problem, denn die erste geschweifte Klammer wird mit der Fehlermeldung "E2141 Fehler in der Deklarationssyntax" woran kann das liegen?

Wenn ich das Beispiel aus der Borland-Builder Hilfe
Code:
int sort_function( const void *a, const void *b);
char list[5][4] = { "cat", "car", "cab", "cap", "can" };

int main(void)
{
   int  x;

   qsort((void *)list, 5, sizeof(list[0]), sort_function);
   for (x = 0; x < 5; x++)
      printf("%s\n", list[x]);
   return 0;
}

int sort_function( const void *a, const void *b)
{
   return( strcmp((char *)a,(char *)b) );
}

einfüge, dan kommt die gleiche Meldung.

Woran ann das liegen?
 
Ja, das ist der komplette Code und die Fehlermeldung kommt bei int main(void){

Könnte es daran liegen, dass ich nicht mit der Konsole arbeite?

edit: Ach du je, ich muss mich für die Satzstellung im Post vorher entschuldigen
 
Ja, das ist der komplette Code und die Fehlermeldung kommt bei int main(void){
Wenn das der vollständige Code ist, dann fehlen erstmal die include Anweisungen für die Headerdateien. Das hat allerdings nichts mit einem Syntaxfehler zu tun. Wenn ich den Code kopiere und bei mir einfüge kompiliert es dann auch problemlos.

Was nutzt du denn für eine Version von Borland?
Könnte es daran liegen, dass ich nicht mit der Konsole arbeite?
Welche Konsole? Es spielt aber auch keine Rolle.

Gruß
 
Tiefster Osten ist das hier, da sind die Unis arm ;-)

Das Programm so wie es bis jetzt ist, kompiliert ohne Probleme. Ist aber noch lange nicht fertig. Im Endzustand soll es hydrologische Abläufe darstellen
 
Tiefster Osten ist das hier, da sind die Unis arm ;-)
Noch lange kein Grund. Eclipse + CDT und NetBeans sind kostenlos und laufen auch noch unter verschiedenen Betriebssystemen, GCC ist kostenlos, Visual Studio Express ist kostenlos usw. Ich hoffe du studierst nichts "informatisches" an dieser Uni, die sich keine zeitgemäßen Werkzeuge "leisten" kann ;)
Das Programm so wie es bis jetzt ist, kompiliert ohne Probleme. Ist aber noch lange nicht fertig. Im Endzustand soll es hydrologische Abläufe darstellen
Und wie hast du dann den Beispielcode verwendet über den wir jetzt reden?

Gruß
 

Neue Beiträge

Zurück