Ich bin nicht ganz sicher, was das Problem ist, aber meine Funktion makeArray
speichert keine Werte beim Lesen der Datei, und so spuckt das Array nur Müll anstelle der Werte, die ich brauche.Main ruft nicht ordnungsgemäß Funktion "makeArray"
Hier ist meine Funktion
#include <stdio.h>
#include <stdlib.h>
#define ROW 12
#define COL 8
void makeArray(FILE *infile, int array[][8]) {
int i, j;
infile = fopen("scores.txt", "r");
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL; j++) {
fscanf(infile, "%d", &array[i][j]);
}
}
fclose(infile);
}
Hier ist Haupt:
int main() {
int choice, array[ROW][COL] = { 0 };
FILE *infile;
makeArray(infile, array);
do {
displayMenu();
scanf("%d", &choice);
processRequest(array, choice);
} while (choice != 0);
return 0;
}
Dieser gesamte Code ist unten:
#include <stdio.h>
#include <stdlib.h>
#define ROW 12
#define COL 8
void makeArray(FILE *infile, int array[][8]) {
int i, j;
infile = fopen("scores.txt", "r");
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL; j++) {
fscanf(infile, "%d", &array[i][j]);
}
}
fclose(infile);
}
int getScore(int array[][8], int month, int game) {
int score;
array[month-1][game-1] = score;
return score;
}
int getMonthMax(int array[][8], int month) {
int i, max;
for (i = 0; i < COL; i++) {
if (array[month - 1][i] > max) {
max = array[month - 1][i];
}
}
return max;
}
int getYearMax(int array[][8]) {
int i, j, max;
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL; j++) {
if (array[i][j] > max) {
max = array[i][j];
}
}
}
return max;
}
float getMonthAvg(int array[][8], int month) {
int i, sum = 0, num = 0, j = 0;
float avg;
for (i = 0; i < COL; i++) {
array[month - 1][i] = num;
sum += num;
j++;
}
avg = (sum/j);
return avg;
}
float getYearAvg(int array[][8]) {
int i, j, k, sum = 0, num;
float avg;
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL; j++) {
array[i][j] = num;
sum += num;
k++;
}
}
avg = (sum/k);
return avg;
}
int toursMissed(int array[][8]) {
int i, j, k;
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL; j++){
if (array[i][j] == 0)
k++;
}
}
return k;
}
void displayMenu() {
int i, com;
printf("What would you like to do?\n");
for (i = 0; i < 40; i++) {
printf("-");
}
printf("\nSelect from option 1-7 or 0 to stop\n");
printf("Select 1 to get the score for a specific game\n");
printf("Select 2 to get the max score for a specific month\n");
printf("Select 3 to get the average score for a specific month\n");
printf("Select 4 to get the max score for the year\n");
printf("Select 5 to get the average score for the year\n");
printf("Select 6 to get the number of tournamnets missed for the year\n");
printf("Select 7 to print all scores for the year\n");
printf("Select 0 to stop\n");
for (i = 0; i < 40; i++) {
printf("-");
}
printf("\n");
}
void printArray(int array[][8]) {
int i, j;
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL; j++) {
printf("%d\t", &array[i][j]);
}
printf("\n");
}
}
void processRequest(int array[][8], int integer) {
int f1, f2, f3, f4, f5, f6, f7, f8;
int mont, gam;
if (integer == 0) {
printf("\nThank you! Goodbye\n");
}
if (integer == 1) {
printf("\nPlease enter the month and the game\n");
scanf("%d%d", &mont, &gam);
f1 = getScore(array, mont, gam);
printf("\nThe score for Tournament %d is %d", gam, f1);
}
if (integer == 2) {
printf("\nPlease enter the month\n");
scanf("%d", &mont);
f2 = getMonthMax(array, mont);
printf("\nThe max score for month %d was %d\n", mont, f2);
}
if (integer == 3) {
printf("\nPlease enter the month\n");
scanf("%d", &mont);
f3 = getMonthAvg(array, mont);
printf("\nThe average score for month %d is %4.2f\n", mont, f3);
}
if (integer == 4) {
f4 = getYearMax(array);
printf("\nThe max score for the year is %d\n", f4);
}
if (integer == 5) {
f5 = getYearAvg(array);
printf("\nThe average score for the year is %4.2f\n", f5);
}
if (integer == 6) {
f6 = toursMissed(array);
printf("\nThe number of tournaments missed for the year is %d\n", f6);
}
if (integer == 7) {
printf("\nThe scores for the year are:\n");
printArray(array);
}
}
int main() {
int choice, array[ROW][COL] = { 0 };
FILE *infile;
makeArray(infile, array);
do {
displayMenu();
scanf("%d", &choice);
processRequest(array, choice);
} while (choice != 0);
return 0;
}
nicht sicher, ob es notwendig, alle diese Informationen haben verfügbar, aber es ist jetzt verfügbar.
Nein, das ist nicht das Problem. Es scheint sich gut zu öffnen @ user3121023 – ctelchi
bei 'getScore':' array [monate-1] [spiel-1] = score; '->' score = array [monat-1] [spiel-1]; ' – BLUEPIXY
bei: 'getMonthAvg':' array [i] [j] = num; '->' num = array [i] [j]; ',' avg = (Summe/k); '->' avg = (float) sum/k; ' – BLUEPIXY