WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   Array in C (Übergabe und Sort) (http://www.wcm.at/forum/showthread.php?t=58365)

S@ndy 02.06.2002 12:15

Array in C (Übergabe und Sort)
 
Hallo, :verwirrt:

Habe eine Frage bezüglich Array und Funktion..
Wie kann ich einer Funktion ein Array übergeben...?

und wie kann ich in einem int Array nach den Werten sortieren lassenß
habe in meinem buch den sort befehl gefunden

bsp.

int array[3] = {4, 7, 3};
sort (array, 3);

leider funktioniert das so nicht...

und wie kann ich jetzt das array übergeben damit ich es weiter so mit den index verwenden kann?

DANKE
lg
S@ndy

Sonic 02.06.2002 13:38

Hi!

Anbei ein kleiner Beispielcode der einen bubblesort macht.
Das ist einer der leichtersten sortieralgorythmen und ist (bei nicht allzu großen Einträgen) auch recht schnell.

Ich hoffe ich hab weder einen überlegungs noch schreibfehler drinnen. :D Ich kanns leider zZt nicht testen da ich nicht daheim bin und hier keinen Compiler hab.

lg

Code:

void sortieren (int *array, int last);

void main(void)
{
  int array[5]={4,1,6,9,2};
  sortieren(array,4);
}

void sortieren (int *array, int last)
{
  int i, j, temp;

  for (i=last;i>0;i--)
  {
    for (j=0;j<i;j++)
    {
      if (array[j]>array[j+1])
      {
        temp=array[j];
        array[j]=array[j+1];
        array[j+1]=temp;
      }
    }
  }
}

ps.: Hatte ein paar kleine Fehler drinnen. Code funktioniert jetzt. :D

lg

wizo 03.06.2002 08:55

falls du es aus dem code nicht siehst
du mußt auf das array mittels pointer in der sortierfunktion zugreifen
ein ganzes array kann in c nicht übergeben werden soweit ich weiß

S@ndy 03.06.2002 09:15

Funkt noch net ganz
 
hallo,

hab das proggi (danke jetzt hab ich endlich verstanden warum meine arrayübergabe net funktioniert hat --> ich hab immer hinten [3] dazu geschrieben und er hat mir natürlich nur das 3. element übergeben...)
jetzt compiliert und macht leider net ganz das was ich wollte
es sortiert net alle...
ausgabe...
4 1 6 9 2
1 4 6 2 9

kannst du mir da noch weiterhelfen und vielleicht auch erklären warum er das so tut - ganz herzlichen DANK!!!!

lg
S@ndy

wizo 03.06.2002 09:22

code?

tuxlux 03.06.2002 09:32

muss wohl >= 0 sein

S@ndy 03.06.2002 10:25

Code
 
Der Code der oben im Beitrag von Sonic steht....

wizo 03.06.2002 10:36

Code:

void sort (int* array, int laenge)

{

        int a, b, temp;                                        //Bubble

        for (a=0; a<laenge-1; a++)

        {

                for (b=a+1; b<laenge; b++)

                {

                if (array [a] > array [b])

                {

                        temp = array[a];

                        array[a] = array[b];

                        array[b] = temp;

                }

                }

        }

}


S@ndy 03.06.2002 11:16

Danke
 
super danke
hab ich sogar verstanden den code...


Alle Zeitangaben in WEZ +2. Es ist jetzt 05:09 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag