Hallo Leute,
ich habe hier ein Programm geschrieben in C, welches nicht wie gewünscht funktioniert.. Sobald ich den Mittelwert es gewünschten Studenten eingebe, kommt immer nur der Mittelwert des letzten Studenten als Mittelwert... also nicht der gewünschte Mittelwert!
Ich bin leider kein Profi im Programmieren und kenne es erst seit 4 Wochen.. daher bitte ich euch um hilfe.
Hier das besagte Programm:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// Maximale Anzahl Zeilen
// Maximale Anzahl Spalten
#define M 100
#define N 100
//Variablen deklarieren
double maximum(double x[], int n);
double mittelwert(double x[], int n);
void print_array(double a[][N], int m, int n);
//Ab hier beginnt Main-Funktion
int main(void) {
double notenwerte[M][N];
double student[N];
int i, j, m, n, x;
system("title=Notenmittelwerte berechnen");
/* Eingabe Anzahl Studierende und Module */
printf("Anzahl Studierende eingeben: "); scanf_s("%d", &m);
printf("Anzahl Module eingeben: "); scanf_s("%d", &n);
printf("\n");
printf("Notentabelle (Zeilen = Studierende, Spalten = Module)\n");
printf("\n");
//Zufallsgenerator Werte festlegen
srand(time(NULL));
for (i = 0; i < m; i++)
for (j = 0; j < n; j++)
notenwerte[j] = (rand() % 41 + 10) / 10.0;
//Zufallsgenerator printen
/* Gebe Array aus */
print_array(notenwerte, m, n);
/* Berechne Zeilen-Werte */
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
student[j] = notenwerte[j];
}
printf("Zeile %d: Mittelwert: %.1f, Maximum %.1f\n", i + 1, mittelwert(student, n), maximum(student, n));
}
//Ab hier beginnt unterer Text!
x = m;
while (1) {
printf("\n\n\n");
printf("Waehle eine Zeile aus [Ganzzahl>=1 und <=%d eingeben]\n", m);
scanf_s("%d", &x);
printf("\n");
printf("Notenmittelwert des %d-ten Studenten = %.1lf\n", x, mittelwert(student, n));
if (maximum(student, x) > 4) {
printf("Er hat mindestens in einem Modul nicht bestanden");
}
else {
printf("Er hat in allen Modulen bestanden");
}
}
system("PAUSE");
}
//Ab hier beginnt Mittelwert und Maximum berechnung:
//Mittelwert berechnen
double mittelwert(double x[], int n) {
int i = 0;
double m_wert = 0.0;
for (i = 0; i < n; i++)
m_wert += x;
m_wert /= n;
return m_wert;
}
//Maximum berechnen
double maximum(double x[], int n) {
int i;
double max = x[0];
for (i = 1; i < n; i++) {
if (x >= max)
max = x;
}
return max;
}
//Ab hier beginnt print für Zeile und Spalte
void print_array(double a[][N], int m, int n) {
int i, j;
printf(" ");
//print für Spalte (Modul)
for (j = 0; j < n; j++) {
printf("M%d ", j + 1);
}
printf("\n\n");
//print für Zeile (Student)
for (i = 0; i < m; i++) {
printf("Student%d: ", i + 1);
for (j = 0; j < n; j++) {
printf("%5.1f ", a[j]);
}
printf("\n");
}
printf("\n");
}
Vielen Dank im Voraus für eure Hlfe ))))
Gruß Philipp
Philipp Goedel (1) |