Harmonische Reihe



  • Servus Leute,

    Ich habe eine Frage bezüglich meines Programms.
    Mein Programm rechnet aus, wieviele Glieder man in der harmonische Reihe braucht, um einen vom benutzer eingegebenen wert zu erreichen.
    ich bin zufrieden mit dem programm,
    allerdings würde ich noch gerne eine wiederholschleife einbauen, die den benutzer zum schluss des programms fragt, ob er noch eine Rechnung machen will.
    bekomme es irgendwie nicht hin.

    lg

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(void)
    	{
      double sum = 0.0, a, b, c;
      unsigned n, w;
      int d, y, z;
    
      printf("\n\n Berechnung der harmonischen Reihe\n");
      printf(" ==================================\n\n");
      printf(" Dieses Programm wird einen von Ihnen eingegebenen ganzzahligen Wert\n mittels der harmonischen Reihe annaehern.\n");
      printf(" Es wird dabei ausgerechnet, bis zu welchem Glied n die harmonische Reihe\n berechnet werden muss, damit die Summe der Glieder n gerade so ueber\n ihren gewuenschten Wert liegt.\n");
      printf(" Man erkennt, dass die Anzahl der Glieder n regelmaessig groesser wird.\n");
      printf(" Deswegen wird zusaetzlich bei jeder Ausgabe der Quotient n / n-1 ausgegeben.\n\n");
      printf(" ==================================\n\n");
      printf(" Geben Sie einen ganzzahligen Wert ein: "); scanf("%d",&z);
      printf("\n");
    
      for (w = 1; z <= 0; ++w) {
    	printf(" Ihr gewuenschter Wert muss einen hoeheren Wert als 0 besitzen\n");
        printf(" Geben Sie einen neuen Wert ein: "); scanf("%d",&z);
    	printf ("\n");
      };
    
      for(n = 1; sum < z; ++n) {
        double x = 1 / (double) n;
        printf(" %2d. Glied: %lf\n", n, x);
        sum += x;
      };
      printf("\n");
      printf (" Es muessen %d. Glieder der harmonischen Reihe berechnet werden.\n", --n);
      printf (" Ihre Summe betraegt: %lf\n", sum);
      a = n-1;
      b = n;
      c = b/a;
      d = n-1;
    
      if(d<1)
      printf (" Der Quotient n / n-1 kann nicht berechnet werden, weil der Nenner Null waere!\n\n\n");
      else
      printf (" Der Quotient n / n-1 betraegt: %d/%d also %lf\n\n\n", n, d, c);
    
     system ("PAUSE");
     return 0;
    };
    


  • Wo genau liegt denn das problem?



  • ich würde gern zum schluss des programmes den benutzer fragen, ob er noch eine rechnung durchführen will.
    wie kann ich das programmieren?



  • Mit einer do-while Schleife.

    Allerdings frage ich mich immer noch was die for-Schleife von Zeile 20 - 24 machen soll? 😕



  • vielen dank,

    die for schleife überprüft ob der benutzer eine höhere zahl als 0 eingibt. diese harmonische reihe soll nur mit positiven zahlen funktionieren



  • MaxPayne schrieb:

    die for schleife überprüft ob der benutzer eine höhere zahl als 0 eingibt. diese harmonische reihe soll nur mit positiven zahlen funktionieren

    Aber warum eine for-Schleife? Warum das w?

    Wenn man eine bestimmte Anzahl abzählts, nimm die for-Schleife.

    Wenn du nichts zählen musst, nimm die while-Schleife.

    Wenn die Bedingung am Ende überprüft werden soll, nimm do-while.

    for und while sind äquivalent.


  • Mod

    DirkB schrieb:

    for und while sind äquivalent.

    Alle Schleifen sind äquivalent ineinander umformbar.



  • MaxPayne schrieb:

    vielen dank,

    die for schleife überprüft ob der benutzer eine höhere zahl als 0 eingibt. diese harmonische reihe soll nur mit positiven zahlen funktionieren

    Ja, was die for-Schleife macht sehe ich, aber die ist hier fehl am Platz. 😉 Das meinte ich damit.


Anmelden zum Antworten