1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Mitglieder
  3. Stellina

Beiträge von Stellina

  • dynamischer speicher - fehlermeldung

    • Stellina
    • 23. Dezember 2004 um 18:24

    ups das return 0;

    und die eine eckige klammer hab ich jetzt vergessen rüberzukopieren...

  • dynamischer speicher - fehlermeldung

    • Stellina
    • 23. Dezember 2004 um 18:23

    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;

  • dynamischer speicher - fehlermeldung

    • Stellina
    • 23. Dezember 2004 um 18:21

    ja aber ich hab das ja schon ganz unten stehen!

    also ganz am ende vom programm
    darunter steht dann nur noch return 0;

    das programm tut ja auch alles was es tun muss, nur halt, dass dann wenn es fertig is diese fehlermeldung ausspuckt...

  • dynamischer speicher - fehlermeldung

    • Stellina
    • 23. Dezember 2004 um 18:00

    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?!

  • Hilfsfeld dynamisch programmieren

    • Stellina
    • 19. Dezember 2004 um 16:28

    na ja ich muss in C programmieren

    mit C++ kenn ich mich gar nicht aus :frowning_face:

  • Hilfsfeld dynamisch programmieren

    • Stellina
    • 19. Dezember 2004 um 15:38

    Danke
    eine Frage hätte ich noch:

    GIbt es in C einen Befehl wie man ein Feld umdrehne kann?

    also dass dann statt 1,2,3 dann 3,2,1 ausgegeben wird?!

    Oder muss man das in einer Funktion schreiben?!

  • Hilfsfeld dynamisch programmieren

    • Stellina
    • 19. Dezember 2004 um 01:49

    Wieübergeb ich das richtig als parameter?!

    weil das feld und so ist in der main funktion deklariert und das hilfsfeld brauche ich in einer eigenen Funktion...

  • Hilfsfeld dynamisch programmieren

    • Stellina
    • 18. Dezember 2004 um 20:10

    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?!

  • Spaltenweise abspeichern einer Matrix (matlab)

    • Stellina
    • 28. November 2004 um 21:51

    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?!

  • Matlab - Untermatrix abspeichern

    • Stellina
    • 27. November 2004 um 02:28

    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

Rechtliches

Impressum

Datenschutzerklärung