Stormrider80
Grünschnabel
Hy Leute,
ich hab hier ein Problem und komm damit einfach nicht weiter. Vielleicht (hoffentlich) kann mir jemand helfen. Ich muß bei dem untenstehenden Programm das Menü das aufgerufen wird wenn es compiliert und gestartet wird (Programm läuft einwandfrei) farbig gestalten. Leider hab ich keine Ahnung wie das gehen soll. Hab schon in mehreren Büchern nachgeschlagen aber nix gefunden. Ich bin für jeden Tip dankbar.
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define SCHALL 330.0 /* Schallgeschwindigkeit 330 m/s. */
#define ERDBESCHL 9.81 /* Erdbeschleunigung 9.81 m/(s^2).*/
#define ABWEICHUNG 0.001 /* zugel. Abweichung bei Iteration*/
//#define BIL clrscr(); /* Bildschirm loeschen */
void wait(void);
void main(void)
{
char kennbuchst,ret;
double zeit,zeit2; /* Gesamtzeit in Sekunden. */
double tiefe,tiefe1,tiefe2; /* Tiefe des Brunnens in Meter. */
double diff, x, y; /* Hilfsvariablen */
int i;
do /* Beginn der do-while-Schleife */
{
//BIL;
setbuf(stdout,NULL);
printf("\n\n\n\t\t");
printf(" L ");
printf(" Berechnen der Tiefe mit der Loesungsformel");
printf("\n\n\t\t");
printf(" I ");
printf(" Berechnen der Tiefe mittels Iteration");
printf("\n\n\t\t");
printf(" x ");
printf(" Programm beenden");
printf("\n\n\t\t Programmfortsetzung: ");
kennbuchst = getche();
//BIL;
switch(kennbuchst)
{
case 'l': /* Berechnen der Tiefe nach Eingabe */
case 'L': /* der gemessenen Zeit */
printf("\n\n\n\t\t Zeit vom Loslassen des Steins bis zum ");
printf("\n\t\t Eintreffen des Schalls in Sekunden :");
scanf("%lf%c",&zeit,&ret);
x = zeit/SCHALL + 1.0/ERDBESCHL;
y = zeit/SCHALL;
tiefe = (double)(SCHALL * SCHALL * ( x - sqrt(x * x - y * y )));
printf("\n\t\t Der Schacht ist %6.2f Meter tief",tiefe);
printf("\n\n\n\n");
wait();
break;
case 'i': /* Berechnen der Tiefe nach Eingabe */
case 'I': /* der gemessenen Zeit */
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: %6.2f Meter",i,tiefe);
} while (fabs(diff) > ABWEICHUNG);/* solange bis die Zeit nur */
/* noch um die festgelegte */
/* Abweichung von der gemessenen entfernt ist */
printf("\n\n\n\n");
wait();
break;
case 'x':
printf("\nProgrammende\n");
wait();
break;
default: /* Anweisungsblock des */
printf("\nFalscher Kennbuchstabe"); /* Fehlerfalles */
wait();
break;
}
}while(kennbuchst != 'x'); /* Ende der do - while-Schleife */
}
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
/* Die Funktion 'wait' gibt einen Text aus und wartet auf 'RETURN' */
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
void wait(void)
{
puts("Bitte die Taste RETURN druecken!");
while( getch() != '\r' );
}
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
ich hab hier ein Problem und komm damit einfach nicht weiter. Vielleicht (hoffentlich) kann mir jemand helfen. Ich muß bei dem untenstehenden Programm das Menü das aufgerufen wird wenn es compiliert und gestartet wird (Programm läuft einwandfrei) farbig gestalten. Leider hab ich keine Ahnung wie das gehen soll. Hab schon in mehreren Büchern nachgeschlagen aber nix gefunden. Ich bin für jeden Tip dankbar.
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define SCHALL 330.0 /* Schallgeschwindigkeit 330 m/s. */
#define ERDBESCHL 9.81 /* Erdbeschleunigung 9.81 m/(s^2).*/
#define ABWEICHUNG 0.001 /* zugel. Abweichung bei Iteration*/
//#define BIL clrscr(); /* Bildschirm loeschen */
void wait(void);
void main(void)
{
char kennbuchst,ret;
double zeit,zeit2; /* Gesamtzeit in Sekunden. */
double tiefe,tiefe1,tiefe2; /* Tiefe des Brunnens in Meter. */
double diff, x, y; /* Hilfsvariablen */
int i;
do /* Beginn der do-while-Schleife */
{
//BIL;
setbuf(stdout,NULL);
printf("\n\n\n\t\t");
printf(" L ");
printf(" Berechnen der Tiefe mit der Loesungsformel");
printf("\n\n\t\t");
printf(" I ");
printf(" Berechnen der Tiefe mittels Iteration");
printf("\n\n\t\t");
printf(" x ");
printf(" Programm beenden");
printf("\n\n\t\t Programmfortsetzung: ");
kennbuchst = getche();
//BIL;
switch(kennbuchst)
{
case 'l': /* Berechnen der Tiefe nach Eingabe */
case 'L': /* der gemessenen Zeit */
printf("\n\n\n\t\t Zeit vom Loslassen des Steins bis zum ");
printf("\n\t\t Eintreffen des Schalls in Sekunden :");
scanf("%lf%c",&zeit,&ret);
x = zeit/SCHALL + 1.0/ERDBESCHL;
y = zeit/SCHALL;
tiefe = (double)(SCHALL * SCHALL * ( x - sqrt(x * x - y * y )));
printf("\n\t\t Der Schacht ist %6.2f Meter tief",tiefe);
printf("\n\n\n\n");
wait();
break;
case 'i': /* Berechnen der Tiefe nach Eingabe */
case 'I': /* der gemessenen Zeit */
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: %6.2f Meter",i,tiefe);
} while (fabs(diff) > ABWEICHUNG);/* solange bis die Zeit nur */
/* noch um die festgelegte */
/* Abweichung von der gemessenen entfernt ist */
printf("\n\n\n\n");
wait();
break;
case 'x':
printf("\nProgrammende\n");
wait();
break;
default: /* Anweisungsblock des */
printf("\nFalscher Kennbuchstabe"); /* Fehlerfalles */
wait();
break;
}
}while(kennbuchst != 'x'); /* Ende der do - while-Schleife */
}
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
/* Die Funktion 'wait' gibt einen Text aus und wartet auf 'RETURN' */
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
void wait(void)
{
puts("Bitte die Taste RETURN druecken!");
while( getch() != '\r' );
}
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/