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