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. Sabine02

Beiträge von Sabine02

  • malloc richtig anwenden

    • Sabine02
    • 14. September 2011 um 22:31

    Danke Bernd für deine schnelle Antwort. Das ist nur der erste Teil des Programms,ich muss noch den Algorithmus von Ford Fulkerson programmieren. Leider funktionierts auch mit den geänderten return Werten nicht.
    lg Sabine

  • malloc richtig anwenden

    • Sabine02
    • 14. September 2011 um 19:48

    Hallo an alle,

    ich bin am Beginn meines Programms und soll entweder Daten von einer Datei einlesen oder die Daten per Tastatur einlesen. Die Eingabedatei sieht beispielsweise so aus:

    4 5 1 4
    1 2 6
    1 3 5
    2 3 2
    2 4 7
    3 4 3

    Mein Problem ist (unter anderem;)): Ich möchte das Nullsetzen von capacity in eine eigene Funktion schreiben. Aber es funktioniert irgendwie nicht. Ich bekomme folgende Fehlermeldung:

    c(80): error #2162: Extraneous return value.
    c(88): error #2162: Extraneous return value.
    *** Error code: 1 ***

    Das ist der Code der funktioniert:

    C
    #include <stdio.h>
    #include <stdlib.h> //wird für die Funktion malloc benötigt
    
    
    
    
    //int *queque;
    //int visited[3];
    //int tail, head;
    int number_nodes, number_edges, source, sink;
    int **capacity;    
    //int **flow;
    //int *vorgaenger;
    
    
    //int minimum (int u, int v);
    //int maximum (int a, int b);
    //void in_queque (int x);
    //int out_queque (void);
    //int bfs (int s, int t);
    
    
    
    
    int main(void) {
    
        int i, j, h, k, c, y;
        char eingabe;
        //int max_cap;
        //int max_flow = 0;
    
    
    
    
        printf("Daten aus Datei (d) oder Daten eingeben (e)\n");
    
    
        scanf("%c", &eingabe);//mit %char hats funktioniert geht auch %s
    
            if (eingabe == 'd') {
    
    
                FILE*daten = fopen("datenkomb.txt", "r");  
    
                if (daten == NULL)
                    fprintf(stderr, "Kann Datei nicht oeffnen\n");
                else         
                    fscanf(daten, "%d %d %d %d", &number_nodes, &number_edges, &source, &sink);
    
                capacity = malloc(number_nodes*sizeof(int*));//oder (int*)malloc(number_nodes*sizeof(int))
    
                if (capacity == NULL) {
                    puts("Fehler bei der Speicherzuweisung.");
                    return 1;
                }
    
    
                for (i=0; i<number_nodes;i++) {
                    capacity[i] = malloc((number_nodes)*sizeof(int));
    
    
                    if (capacity[i] == NULL) {
                        puts("Fehler bei der Speicherzuweisung.");
                        return 1;
                    }
                }    
    
    
    
                for (i=0; i<number_nodes; i++) {
                    for (j=0; j< number_nodes; j++)
                        capacity[i][j] = 0;
                }
    
    
    
    
                for (i=0; i< number_edges; i++){                                            //Knoten 1 wird zu Knoten 0 usw.
                    fscanf (daten, "%d %d %d", &h, &k, &c) ; 
                    capacity[h-1][k-1] = c; 
                    printf("%d %d %d \n", h, k, c);
                } 
    
    
                fclose(daten);
            }
    
    
            for (i=0; i<number_nodes; i++) {
                for (j=0; j< number_nodes; j++){
                    printf("%d", i);
                    printf("%d",j);
                    printf("%d\n",capacity[i][j]);
                }
            }
        //else
    
    
    }
    Alles anzeigen

    Das ist der Code mit Funktion:

    C
    #include <stdio.h>
    #include <stdlib.h> //wird für die Funktion malloc benötigt
    
    
    
    
    //int *queque;
    //int visited[3];
    //int tail, head;
    int number_nodes, number_edges, source, sink;
    int **capacity;    
    int **u;
    //int **flow;
    //int *vorgaenger;
    
    
    //int minimum (int u, int v);
    //int maximum (int a, int b);
    //void in_queque (int x);
    //int out_queque (void);
    //int bfs (int s, int t);
    void makezero(int**u, int v, int w); 
    
    
    int main(void) {
    
        int i, j, h, k, c, y;
        char eingabe;
        //int max_cap;
        //int max_flow = 0;
    
    
    
    
        printf("Daten aus Datei (d) oder Daten eingeben (e)\n");
    
    
        scanf("%c", &eingabe);//mit %char hats funktioniert geht auch %s
    
            if (eingabe == 'd') {
    
    
                FILE*daten = fopen("datenkomb.txt", "r");  
    
                if (daten == NULL)
                    fprintf(stderr, "Kann Datei nicht oeffnen\n");
                else         
                    fscanf(daten, "%d %d %d %d", &number_nodes, &number_edges, &source, &sink);
    
    
                makezero(capacity, number_nodes, number_edges);
    
    
    
    
                
    
    
    
    
                for (i=0; i< number_edges; i++){                                            //Knoten 1 wird zu Knoten 0 usw.
                    fscanf (daten, "%d %d %d", &h, &k, &c) ; 
                    capacity[h-1][k-1] = c; 
                    printf("%d %d %d \n", h, k, c);
                } 
    
    
                fclose(daten);
            }
    
    
            for (i=0; i<number_nodes; i++) {
                for (j=0; j< number_nodes; j++){
                    printf("%d", i);
                    printf("%d",j);
                    printf("%d\n",capacity[i][j]);
                }
            }
        //else
    
    
            //printf("Eingabe der Daten folgenderweise:\n Anzahl der Knoten Anzahl dder Kanten Quelle Senke\n für i-te Kante:Anfangsknoten Endknoten Kapazität\n zwischen den Werten ein Leerzeichen."); //einlesen von eingabe
    
    }
    
    
    
    
    
    
    void makezero(int **u, int v, int w) {
    
                int i,j;
                u = malloc(v*sizeof(int*));//oder (int*)malloc(v*sizeof(int))
    
                if (u == NULL) {
                    puts("Fehler bei der Speicherzuweisung.");
                    return 1;
                }
    
    
                for (i=0; i<v;i++) {
                    u[i] = malloc((v)*sizeof(int));
    
    
                    if (u[i] == NULL) {
                        puts("Fehler bei der Speicherzuweisung.");
                        return 1;
                    }
                }    
    
    
    
                for (i=0; i<v; i++) {
                    for (j=0; j< v; j++)
                        u[i][j] = 0;
                }
    
    
            }
    Alles anzeigen


    Danke für eure Hilfe******

    lg
    Sabine

Rechtliches

Impressum

Datenschutzerklärung