Beiträge von Thunder90

    Hallo
    Habe folgendes unter Pascal Programmiert jedoch soll das in C geschrieben werden kann mir einer helfen?

    interface
    type Value = integer;
    VProc = procedure(v : Value);
    List = ^ElemR;
    ElemR = record
    val : Value;
    next : List;
    end;
    twoLists = record
    l1 : List;
    l2 : List;
    end;
    procedure insertend ( rec : list; var first,last : list );
    function mixsort( var l : list ) : list;
    function merge ( l1, l2 : list ) : list;
    function mix ( l1, l2 : list ) : list;
    function split(l : List) : twoLists;
    function getLenght(l : List) : Value;
    ...
    function getLenght(l : list):integer;
    var counter : longint; // Variableninitialisation
    finish : boolean;
    begin
    finish := false; // Endvariable auf false setzen
    counter := 0; // Zählvariable auf 0 setzen
    while(finish = false) do // solange Ende nicht erreicht
    begin
    if(tail(l) = nil) then finish := true else // Wenn aktuelles Elemement = letztes Element
    l := tail(l); // Erstes Element entfernen und
    counter := counter + 1; // die Zählvariable erhöhen
    end; // while
    getLenght := counter; // die Länge zurückgeben
    end; //getLenght
    procedure insertend ( rec : list; var first,last : list );
    begin
    if first = nil then first := rec else last^.next := rec;
    last := rec;
    end;
    function merge( l1, l2 : list ) : list;
    var first, last, temp : list;
    begin
    first := init;
    last := init;
    while l2 <> nil do
    if l1 = nil then begin l1 := l2; l2 := nil end
    else begin
    if l2^.val > l1^.val then
    begin temp := l1; l1 := l1^.next end
    else begin temp := l2; l2 := l2^.next end;
    temp^.next := nil;
    insertend( temp, first, last )
    end;
    insertend( l1, first, last );
    merge := first
    end;
    function mixsort( var l : list) : list;
    var temp : list;
    listen : twoLists;
    n : integer;
    begin
    n := getLenght(l);
    if (l = nil) then mixsort := nil else if n>1 then
    begin
    listen := split(l);
    mixsort := merge( mixsort( listen.l1 ), mixsort( listen.l2 ));
    end
    else
    begin
    temp := l;
    l := l^.next;
    temp^.next := nil;
    mixsort := temp;
    end
    end;
    function mix (l1, l2: List) : List;
    var tmplst : List;
    begin
    tmplst := merge(l1, l2);
    mix := mixsort(tmplst);
    end; // mix

    Also habe folgende Aufgaben: 1.Schreiben Sie eine C-Funktion, die für eine 5×5-Matrix das größte Element zurück liefert.Welche
    Typdeklaration ist dazu notwendig? 2.Wie ist die Funktion zu verändern, wenn neben dem Wert des Elementes auch dessen Position
    in der Matrix ermittelt werden soll?

    Meine Lösung zu 1.:

    #include <stdio.h>

    int matrixc(int input[5][5]);

    int main() {
    int output;

    int matrix[5][5] = {
    {1,2,3,4,5},
    {5,6,7,8,9},
    {4,3,2,1,9},
    {1,2,3,4,5},
    {0,0,0,0,2}};

    // Aufruf der Funktion, die du schreiben sollst
    // Dabei wird die Matrix übergeben
    output = matrixc(matrix);

    // Kann man auch noch ausgeben, um besser zu kontrollieren
    printf("%d\n", output);
    }

    // Und die schreibst du dann:
    int matrixc(int input[5][5]) {
    // lokale Variablen
    int i,z;
    int high = input[0][0]; // Anfangswert ist der erste Wert

    /**
    * Nun für jede Zeile und Spalte durchlaufen
    * und dabei immer das Element speichern, welches
    * größer ist, als das aktuelle Element.
    */
    for (i=0; i < 5; i++) {
    for(z=0; z < 5; z++) {

    if (input[i][z] > high) {
    high = input[i][z];
    }
    }
    }

    return high;
    }


    und 2. weiß ich nicht was ich verändern soll bzw dazukommt[Blockierte Grafik: http://www.informatikforum.de/images/smilies/smile.gif]