Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

Programmieren in C Hilfe gesucht!!

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


Antworten zu Programmieren in C Hilfe gesucht!!:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hallo,
bin ja nicht der große C-Programmierer, Mache ein wenig C++ mit Arduinos usw., aber fehlen da nicht ein paar geschweifte Klammern?
 

Zitat
for (i = 0; i < n; i++)
      m_wert += x;
   m_wert /= n;
   return m_wert;

Also eher so?
Zitat
for (i = 0; i < n; i++){
      m_wert += x;
   m_wert /= n;
}
   return m_wert;

« Fallunterscheidung-if schleifePython konfigurieren »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Internet-Zugriffsprogramm
Ein Internet-Zugriffsprogramm, auch Browser genannt, stellt Internetseiten für den Benutzer dar. Am bekanntesten ist der Microsoft Internet Explorer, gefolgt vom kos...

Programm
Siehe Software...

Eingabefelder
Als Eingabefelder werden in einem Programm oder in Online-Formularen die Stellen bezeichnet, an denen Informationen eingetippt werden können. Die Beschriftung neben ...