bibliothek prob
-
Hallo allerseits
irgendwie lässt sich das untenstehende Prog nicht compilieren. Denk mal es liegt an der <math.h> bibliothek, aber ganz sicher bin ich mir nicht.
Habt ihr nen Tip?Gruß Jürgen
#include <stdio.h> #include <curses.h> #include <math.h> #include <ctype.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 clear(); /* Bildschirm loeschen */ #define ROW 4 /* erste Ausgabezeile */ #define COL 10 /* Ausgabespalte */ #define RETURN 13 void wait(void); void main(void) { char kennbuchst; double zeit,zeit2; /* Gesamtzeit in Sekunden. */ double tiefe,tiefe1,tiefe2; /* Tiefe des Brunnens in Meter. */ double diff, x, y; /* Hilfsvariablen */ int i; char str[100]; initscr(); /* Initialisiert das Terminal */ cbreak(); /* Zeichen sofort weiterreichen */ nonl(); /* Keine neue Zeile bei Return */ intrflush(stdscr, FALSE); keypad(stdscr, TRUE); /* Ziffernblock aktivieren. */ clear(); /* Bildschirm loeschen */ do /* Beginn der do-while-Schleife */ { BIL; mvaddstr(ROW,COL," L Berechnen der Tiefe mit der Loesungsformel"); mvaddstr(ROW+2,COL," I Berechnen der Tiefe mittels Iteration"); mvaddstr(ROW+4,COL," T Ausgeben einer Tabelle "); mvaddstr(ROW+6,COL," x Programm beenden"); mvaddstr(ROW+8,COL," Programmfortsetzung: "); kennbuchst = getch(); BIL; switch(kennbuchst) { case 'l': /* Berechnen der Tiefe nach Eingabe */ case 'L': /* der gemessenen Zeit */ addstr("\n\n\n\t\t Zeit vom Loslassen des Steins bis zum "); addstr("\n\t\t Eintreffen des Schalls in Sekunden : "); addstr("\n\t\t "); getstr(str); sscanf(str,"%lf",&zeit); x = zeit/SCHALL + 1.0/ERDBESCHL; y = zeit/SCHALL; tiefe = (double)(SCHALL * SCHALL * ( x - sqrt(x * x - y * y ))); sprintf(str,"\n\n\t\t Der Schacht ist %5.1f Meter tief",tiefe); addstr(str); wait(); break; case 'i': /* Berechnen der Tiefe nach Eingabe */ case 'I': /* der gemessenen Zeit */ addstr("\n\n\n\t\t Zeit vom Loslassen des Steines bis zum "); addstr("\n\t\t Eintreffen des Schalls in Sekunden : "); addstr("\n\t\t "); getstr(str); sscanf(str,"%lf",&zeit); tiefe1 = zeit * zeit * ERDBESCHL / 2; /* Berechnung der */ zeit2 = tiefe1/SCHALL; /* beiden Grenzwerte */ tiefe2 = (zeit - zeit2) * (zeit - zeit2) /* 'tiefe1' u.'tiefe2'*/ * ERDBESCHL / 2; sprintf(str,"\n\n\t\t Oberer Grenzwert: = %lf Meter" ,tiefe1); addstr(str); sprintf(str,"\n\t\t Unterer Grenzwert: = %lf Meter\n\n" ,tiefe2); addstr(str); 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; sprintf(str,"\n\t\t %1d .Berechnungslauf: %5.2f Meter",i,tiefe); addstr(str); } while (fabs(diff) > ABWEICHUNG);/* solange bis die Zeit nur */ /* noch um die festgelegte */ /* Abweichung von der gemessenen entfernt ist */ wait(); break; case 't': /* Ausgeben einer Tabelle fuer Zeiten */ case 'T': /* zwischen 1 und 10 Sekunden */ addstr("\n\n\n\n\t\t Tabelle fuer gemessene Zeiten "); addstr("\n\t\t von 1 bis 10 Sekunden:"); addstr("\n\n\t\t Sekunden Meter"); for( zeit = 1.0; zeit <= 10.0 ; zeit++) { x = (double)(zeit/SCHALL + 1/ERDBESCHL); y = (double)(zeit/SCHALL); tiefe = (double)( SCHALL * SCHALL * ( x - sqrt(x * x - y * y ))); sprintf(str,"\n\t\t %4.1f %5.1f ",zeit,tiefe); addstr(str); } wait(); break; case 'x': mvaddstr(23,COL,"Programmende"); break; default: /* Anweisungsblock des */ mvaddstr(23,COL,"Falscher Kennbuchstabe");/* Fehlerfalles */ wait(); break; } }while(kennbuchst != 'x'); /* Ende der do - while-Schleife */ endwin(); } /***********************************************************************/ /* Die Funktion 'wait' gibt einen Text aus und wartet auf 'RETURN' */ /***********************************************************************/ void wait(void) { mvaddstr(24,1,"Bitte die Taste RETURN druecken!"); while( getch() != RETURN ); } /************************************************************************/
-
c:\Dokumente und Einstellungen\admin\Desktop\helloworld.c(63): fatal error C1083: Include-Datei kann nicht geöffnet werden: 'curses.h': No such file or directory
-
Sieht so aus, als ob das Programm fuer Linux geschrieben waere. Ggf. musst Du Dir die curses-Bibliothek fuer Deine Plattform besorgen.
-
Vertexwahn schrieb:
c:\Dokumente und Einstellungen\admin\Desktop\helloworld.c(63): fatal error C1083: Include-Datei kann nicht geöffnet werden: 'curses.h': No such file or directory
lach
ich würds einfach mal unter linux probieren
-
und ich dacht wir wären hier im ANSI C Forum
-
tja, nicht alle wissen das
-
problem gelöst, hab ohne -lm compiliert
-
das nächste mal einfach in linux posten
-
okay beim nächsten mal, war nicht ganz bei der sache