Beiträge von Stellina

    okay also das ist das programm: (den algorithmus zum sortieren hab ich mal weggelassn der ist dafür denk ich eh mal unrelevant...)
    main()
    {


    // Deklarieren der Variablen
    int anzahl;
    int i;
    int j;
    char eingabe;
    double elemente;
    double* feld = malloc(anzahl*sizeof(double));
    double* hilfsfeld = malloc(anzahl*sizeof(double));

    printf("\nDieses Programm sortiert die Elemente eines Feldes in aufsteigender bzw. \n absteigender Reihenfolge.\n\n");

    // Eingabe der Elemente
    printf("\nGeben Sie die zu sortierenden Elemente - durch Leerzeichen getrennt - ein. \n (Eingabe bitte mit Entertaste beenden!) \n\n");

    // do-while Schleife, weil solange Elemente eingegeben werden, bis die Entertaste gedrueckt wird
    do
    {
    scanf("%lf", &elemente);
    // Das Feld wird vergroessert, damit die naechste Zahl eingelesen werden kann
    feld = realloc(feld, (anzahl+1)*sizeof(double));

    feld[anzahl] = elemente;
    anzahl++;
    }
    while (getchar() != '\n');


    // Auswahl, ob die Sortierung in aufsteigender Reihenfolge erfolgen soll
    printf("\n\nWollen Sie die Elemente aufsteigend sortieren? (j/n) ");
    scanf("%s", &eingabe);

    if (eingabe == 'j')
    {
    // Funktionsaufruf
    mergesort(feld, hilfsfeld, 0, anzahl-1);

    // Ausgabe des sortierten Feldes
    printf("\nDas sortierte Feld: \n");
    for (i=0; i < anzahl; i++)
    {
    printf("\n%lf \n", feld[i]);
    }

    printf("\n");
    }
    else
    {
    if (eingabe == 'n')
    {
    // Funktionsaufruf
    mergesort(feld, hilfsfeld, 0, anzahl-1);

    // Ausgabe des sortierten Feldes (in umgekehrter Reihenfolge)
    printf("\nDas sortierte Feld: \n");
    for (i = anzahl-1; i >= 0; i--)
    {
    printf("\n%lf \n", feld[i]);
    }
    printf("\n");
    }
    }

    // reservierten Speicherplatz freigeben
    free(feld);
    feld = NULL;
    free(hilfsfeld);
    hilfsfeld = NULL;

    Hallo!

    Ich hab nochmal ein Problem mit dem dynamischen speicher!!

    Ich hab jetzt mein programm frtig und es funktioniert auch
    nur nachdem das programm alles getan hat was es tun soll (brav brva *gg*)
    kommt die fehlermeldung: "Segmentation fault"

    Und ich bin draufgekommen wieso

    weil am ende des programms hab ich
    free(feld)
    feld = NULL;
    free(hilfsfeld)
    hilsfeld = NULL;

    stehen...
    Da smuss ich ja (also den speicherplatz wieder freigeben)
    Wenn ich den nämlich weglas kommt die fehlermeldung nicht, aber ich kann das ja nicht einfach weglassen oder?!

    Ich habe ein Feld dynamisch programmiert: (in der main funktion)
    FILE* fid;
    fid = fopen(datei, "r");
    if (fid == NULL)
    {
    printf("\n Datei konnte nicht geoeffnet werden!");
    }
    for (anzahl = 0; fscanf(fid, "%d", &tmp) != EOF; anzahl++);
    fclose(fid);
    double* feld = malloc(anzahl*sizeof(double));


    Für mein Programm brauche ich aber ein Hilfsfeld in einer Funktion
    Das Hilfsfeld soll eben die selbe Größe wie das vom feld haben nur wie mach ich das?!

    Ich habe ein Problem.
    also eine gegebenen Matrix wird in eine Datei geschrieben.
    Dass die Datei erstellt wird habe ich geschafft nur beim reinschreiben der matrix habe ich ein paar probleme.
    was ich bis jetzt habe:

    % Die Dimension (Groesse) der gegebenen Matrix wird ermittelt.
    [m,n] = size(matrix);
    % Abspeichern der Matrix
    fprintf(fid, '%3.3f', m);
    fprintf(fid, '%3.3f', n);
    % Die Koeffizienten werden Spalte fuer Spalte in die Datei geschrieben
    for c = 1:n
    for d = 1:m
    fprintf(fid, '%3.3f', matrix(c,d));
    end
    end

    Beim Ausprobieren steht zwar dass es erfolgreich abgepeichert wurde, nur wenn ich die datei öffne steht was anderen drinnen als die matrix!

    Was kann hier nicht stimmen?!

    Muss bis Dienstag ein Programm fertig haben, dass eine Untermatrix abspeichert.

    "Die Koeffizienten einer m x n Matrix sollen in einer Datei mit Direktzugriff gespeichert werden und zwar eine Spalte nach der anderen (erster Feld-Index variiert schneller als der zweite.
    Man entwickle zwei Funktionen:
    1. Abspeichern einer gegebenen Matrix in einer (neu zu erstellenden) Datei (wie oben beschrieben)
    2. Einlesen einer beliebigen "Untermatrix" (d..h. eines beliebigen rechteckigen Ausschnittes, der wieder einer m' x n' Matrix entspricht, m' <= m, n' <= n) von einer solchen Datei und Abspeichern dieser Untermatrix in einem entsprechend dimensionalen Feld. Dabei soll nicht die ganze m x n Matrix eingelesen werden. Einzelne Koeffizienten, einzelne Spalten oder Zeilen stellen zulässige Spezialfälle solcher Untermatrizen dar.

    Programmtyp: Matlab-Funktion, nicht rekursiv
    eingangsparameter: 1. die betreffende Matrix, der dateiname und ein status indikator, der Probleme beim Dateizugriff, unzulässige Dimensionsangaben etc anzeigt.
    2. dateiname, die Index.Information, die die gewünscht Untermatrix identifizieren und ein Status-Indikator.
    ausgangsparameter:
    1. status indikator
    2. untermatrix und der status-Indikator"

    Ich weiß das war jetzt viel *g* Nur mein großes Problem ist: Wie speicher ich die Matrix in einer datei mit direktzugriff?!?!

    Danke