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