Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » C++ (lösen eines math.problems mittels Rekursion!?)

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
08.10.2003, 16:56 Uhr
~Thommi64
Gast


Hallo C++ Fans,

habe für mein Fernstudium folgende Aufgabe zu lösen und komme einfach nicht zum Ziel!

Rekursive Berechnung einer Schachtiefe über die gemessene Zeit zwischen dem loslassen eines Steines bis Eintreffen des Schalls nach Aufschlag des Steins!
Die Lösung mittels Iteration habe ich hier:

Eingabe der Zeit in sec.

C++:
printf("\n\n\n\t\t Zeit vom Loslassen des Steines bis zum ");
        printf("\n\t\t Eintreffen des Schalls in Sekunden : ");
        scanf("%lf%ret",&zeit,&ret);

        tiefe1 = zeit * zeit * ERDBESCHL / 2;    /* Berechnung der     */
        zeit2  = tiefe1/SCHALL;                  /* beiden Grenzwerte  */
        tiefe2 = (zeit - zeit2) * (zeit - zeit2) /* 'tiefe1' u.'tiefe2'*/
                 * ERDBESCHL / 2;

        printf("\n\n\t\t Oberer Grenzwert:  = %lf Meter" ,tiefe1);
        printf("\n\t\t Unterer Grenzwert: = %lf Meter\n\n" ,tiefe2);
        i = 0;
        do  
        {
          i++;
          tiefe = .5 * (tiefe1+tiefe2);   /* Mitte zw. tiefe1 u. tiefe2*/
          diff = sqrt(2*tiefe/ERDBESCHL)  /* Abweichung der berechneten*/
                 +tiefe/SCHALL - zeit;    /* von der gemessenen Zeit.  */

          if (diff   >= 0.0)             /* Das Intervall wird neu    */
            tiefe1 =  tiefe;             /* festgelegt.               */
          else
            tiefe2 = tiefe;

          printf("\n\t\t %1d .Berechnungslauf: %5.2f Meter",i,tiefe);
        } while (fabs(diff) > ABWEICHUNG);/* solange bis die Zeit nur  */
                                          /* noch um die festgelegte   */
                         /* Abweichung von der gemessenen entfernt ist */


Wenn jemand eine Idee hat wie man den Algorihtmus umformen kann wäre ich für eine rettende MAil sehr dankbar.
Bitte an thommi@nikocity.de

Vielen Dank im Voraus!

--edit: Pablo. [ cpp ] tags gesetzt --

Dieser Post wurde am 08.10.2003 um 17:00 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
08.10.2003, 23:06 Uhr
~(un)wissender
Gast


Tipp:
Die do-while Schleife in eine eigene Funtion packen(also nur den Inhalt, die Funktion hat keine Schleife mehr, dass macht dann die Rek.) und dann rek. aufrufen, der Art:

C++:
int rechne(...)
{
if(fabs(diff) > ABWEICHUNG)
return rechne(...);
//Hier anderen int liefern
}



Du musst rechne natürlich noch die Params mit übergeben, wie tiefe, diff, etc.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: