Achilles und die Schildkröte

Post Reply
Message
Author
Junos

Achilles und die Schildkröte

#1 Post by Junos »

Hallo.
Wer kann mir helfen. Ich soll Zenon's Paradoxon in C entwerfen. Das Programm soll sich dabei eines rekursiven Algorithmus bedienen.
Das Programm liefert als Ausgaben:

1. Abstand - den Vorsprung der Schildkröte in Metern, wenn Achilles die Helfte des jeweiliges Vorsprungs erreicht hat,

2. die Zeit, die bis dahin vergangen ist,

3. die Strecke, die Achilles zum Zeitpunkt der nächsten vollständigen Seunde nach Erreichen der Schildkröte zurückgelegt hat.

4. die Strecke, welche die Schildkröte zum Zeitpunkt der nächsten vollständigen Sekunde nach demEinholen durch Achilles zurückgelegt hat

5. Abbruchbedingung ist die Toleranz.
Die Ausgabe auf dem Bildschirm soll so aussehen:

Geschwindigkeit Achilles eingeben :10
Geschwindigkeit Schildkroete eingeben :0.1
Vorsprung Schildkroete eingeben :100
Toleranz eingeben :1

Abstand 100.000 m nach 0.000 sec
Abstand 50.500 m nach 5.000 sec
Abstand 25.503 m nach 7.525 sec
Abstand 12.879 m nach 8.800 sec
......
......
Abstand 0.007 m nach 10.100 sec

Schildkröte nach 11.000000 sek.: = 101.1000
Achilles nach 11.000000 sek.: = 110.0000

Dabei soll das Programm auch gegen unplausible Eingaben gesichert werden:
- Die Geschwindigkeit von Achilles muss > 0 sein
- Die Geschw. von Achilles muss größer sein als die der Schildkröte.
- Die Toleranz muss > 0 sein.
- Die Geschw. von Schildkröte muss > 0 sein.
Ich habe Probleme mit der rekursiven Funktion.
Meine bisherige Entwicklung:
/*****************************************************/
/* Achilles und die Schildkroete */
/*****************************************************/
#include <stdio.h>
#define BIL printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");

double g_A; /*Geschwindigkeit Achilles in m/s */
double g_S; /*Geschwindigkeit Schildkroete in m/S */
double v_S; /*Vorsprung Schildkroete in m */
double t; /*Toleranz in cm */
double z; /* vergangene Zeit in sec */
double ab; /* Abstand */
double z_A; /* Achilles Zeit*/

double schritt(double ab, double z);
/***********************************************************/

int main(void)
{

BIL;
do
{
g_A=0;
printf("\n\tGeschwindigkeit Achilles eingeben <10m/s> :");
scanf("%lf",&g_A);
if(g_A!=0)
break;
printf("\n\tDie Geschwindigkeit von Achilles muss > 0 sein");
}while(1);
do
{
g_S=0;
printf("\n\tGeschwindigkeit Schildkroete eingeben <0.1m/s :");
scanf("%lf",&g_S);
if(g_S!=0)
break;
if(g_S<g_A)
printf("\n\tDie Geschwindigkeit der Schildkroete muss > 0 sein");
break;
printf("\n\tDie Geschwindigkeit von Achilles muss > sein als die Schildkroete");
}while(1);
printf("\tVorsprung Schildkroete eingeben <100m> :");
scanf("%lf",&v_S);
do
{
t=0;
printf("\n\tToleranz eingeben <1cm> :");
scanf("%lf",&t);
if(t!=0)
break;
printf("\n\tDie Toleranz muss >0 sein");
}while(1);
schritt(?????????????????);
printf("(\n\t Schildkroete nach %3.6lf sec.: = %3.4lf",z,v_S+(g_S*z));
printf("\n\t Achilles nacg %3.6lf sec.: = %3.4lf",z,v_S+(g_A*z));
printf("\n\n");

/***********************************************************/
/* Funktion schritt() */
/***********************************************************/
double schritt(double ab, double z)
{

Post Reply