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
Beiträge von Sabine02
-
-
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 3Mein 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
Alles anzeigen#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 }
Das ist der Code mit Funktion:
C
Alles anzeigen#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; } }
Danke für eure Hilfe******
lg
Sabine