Forum: PC-Programmierung Arrays Sortieren in C


von Dennis (Gast)


Lesenswert?

Hallo,

ich lerne gerade für meine Informatik-Klausur und hänge bei einer 
Aufgabe:

Ich soll eine Funktion erstellen, die Werte vom Typ float eines Arrays 
der Größe nach sortiert (1. Element = größter Wert). Es sollen nur 
lokale Variablen und zwei verschachtelte For-Schleifen benutzt werden.

meine Idee war:
1
#include <stdio.h>
2
int x, i, j;
3
float a[100];
4
float Sort(int a[], int n);
5
6
void main(void)
7
{
8
  for (i=0;i<=100;i++) {
9
   printf("%f\n",Sort(i));
10
                       }
11
}
12
13
float Sort(int a[], int n)
14
{
15
16
for (i=1; i< n; ++i) // Array an Position i teilen
17
{
18
                                       // x = a[i]  einzuordnendes Element
19
for (x=a[i]; x<a[j] && (j>=0); j=i-1) // a[i] solange nach links schieben
20
                                      // bis an der richtige Stelle
21
{
22
a[j+1] = a[j]; // linker Nachbar nach rechts verschieben
23
j--;
24
}
25
a[j+1] = x; //Einfuegen an richtiger Position
26
return x;
27
}
28
}

Habt ihr Verbesserungsvorschläge?

MfG Dennis

von Lang (Gast)


Lesenswert?

Hunderte...

Was soll denn die Schleife in der main?

Wo ist x definiert.

Schau dir mal Bubblesort an...

von Md M. (Firma: Potilatormanufaktur) (mdma)


Lesenswert?

Dennis schrieb:
> Habt ihr Verbesserungsvorschläge?

Vernünftig einrücken :)

von Peter II (Gast)


Lesenswert?

Dennis schrieb:
> Habt ihr Verbesserungsvorschläge?

Sort(i);

und

float Sort(int a[], int n);


passt irgendwie nicht zusammen, kann man denn das Programm kompilieren?

von Dennis (Gast)


Lesenswert?

Peter II schrieb:
> Sort(i);
>
> und
>
> float Sort(int a[], int n);

Hast recht, da habe ich einen Fehler gemacht.

von Peter II (Gast)


Lesenswert?

Dennis schrieb:
> da habe ich einen Fehler gemacht.

das war aber nicht der letzte
1
;
2
int x;
3
x=a[i]; 
4
a[j+1] = x;

das bleibt von dem float aber nicht viel übrig.

Und vergib sinnvolle Variablen Namen, sonst verliert man den überblick. 
x oder a also globale Variabel geht ja mal gar nicht.

von Der Andere (Gast)


Lesenswert?

Dennis schrieb:
> Habt ihr Verbesserungsvorschläge?

Ich interpretiere mal.
Du hast eine Hausaufgabe aber keine Lust die zu machen.

Also kopierst du irgendwas aus dem Internet zusammen, das sich nicht mal 
übersetzen lässt, weil du natürlich weisst, das hier nur geholfen wird, 
wenn man selbst auch Initiative zeigt.

Aber du hättest zumindest noch soviel Eigenarbeit reinstecken müssen, in 
deiner IDE den Menüpunkt für das automatische einrücken zu finden und 
das Programm compilierbar zu machen.

Dann hätten wirs vieleicht nicht gemerkt.

von Peter II (Gast)


Lesenswert?

Der Andere schrieb:
> Aber du hättest zumindest noch soviel Eigenarbeit reinstecken müssen, in
> deiner IDE den Menüpunkt für das automatische einrücken zu finden und
> das Programm compilierbar zu machen.

ich vermute mal stark, das es mit TAB eingerückt ist. Dann sieht es im 
web immer anders aus. Darüber könnte man noch hinwegsehen, wenn es 
wenigsten vom Compiler verstanden wird.

von klausb (Gast)


Lesenswert?

Hallo Dennis,

schau Dir doch den Sort in der C-Bibel an. Der ist kurz, auch zu 
schreiben, und funktioniert.

von D. Schlunz (Gast)


Lesenswert?

Suchen ... Das sind die ersten Lektionen in Programmieren. Die muss man 
eh kennen, ohne spezielle Programmiersprache. Die sind immer gleich.

von Klaus W. (mfgkw)


Lesenswert?

Dennis schrieb:
> Es sollen nur
> lokale Variablen und zwei verschachtelte For-Schleifen benutzt werden.

genau zwei oder höchstens 2 Schleifen?
Falls letzteres: mit Verwendung von qsort() geht es ganz ohne Schleifen 
:-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.