1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Alles
  • Alles
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Sabine02

Beiträge von Sabine02

Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • 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

  1. Datenschutzerklärung
  2. Impressum