Es wurden im Programm ein paar Kleinigkeiten bereinigt (Zeilen-Numerierung) und das so geändert, daß es sowohl auf dem Bildschirm ausgibt als auch abspeichert, in die Datei
"Vollkreis.tap", welche man dann im aktuellen verzeichnis des Compilers findet.
Öffnen der Datei mit std::ofstream out("Vollkreis.tap");
Dazu muß oben im include der Filehandler eingebunden sein: #include <fstream>
Und die Datensätze werden geschrieben mit out<<(ISO_BUFFER);
Achtung daß man da das EOL Zeichen \n reinsetzt. Entweder hat der Buffer das schon (wie im vorliegenden Fall), sonst separate Zeile:
out<<datensatz
out<<"\n" =EOL Markierung
Diese Datei hab ich hier in einer Auflösung von 1/100 Schritten mal angehängt zur Betrachtung.
Mußte sie dazu von .tap in .txt umbenennen.
Der Typ double hat in c++ übrigens 16 aktive Nachkommastellen. Ein bißchen mehr als wir brauchen.

Gruß Sharky
Das geänderte Programm, lauffähiger Code:
#include <cstdlib>
#include <iostream>
#include <math.h>
#include <fstream>
using namespace std;
double const pi= 3.141592653589793238462643383279502884197169399375105820974944592 ;
long aufloesung;
double kreisradius;
double sin_grad(double winkel);
double cos_grad(double winkel);
void berechne_kreis(long anz_kreispunkte, double offset_x, double offset_y, double radius);
// ******************************************** MAIN
int main(int argc, char *argv[])
{
kreisradius=15.0;
double offx=0.0;
double offy=0.0;
double rad=15.0;
long aufloesung=long(kreisradius*pi*100+1);
berechne_kreis(aufloesung,offx,offy,rad);
system("PAUSE");
return EXIT_SUCCESS;
}
// ******************************************** END
void berechne_kreis(long anz_kreispunkte,double offset_x,double offset_y,double radius)
{
char ISO_BUFFER[81]="";
double vollkreis=360.0;
double winkelschritt=vollkreis/anz_kreispunkte;
double winkel_aktuell=0.0;
double x,y;
std::ofstream out("Vollkreis.tap");
for (long l=0;l<anz_kreispunkte;l++)
{
y=sin_grad(winkel_aktuell)*radius+offset_y;
x=cos_grad(winkel_aktuell)*radius+offset_x;
sprintf(ISO_BUFFER,"N %06i G1 X %1.10f Y %1.10f \n",l+1,x,y);
printf(ISO_BUFFER);
out<<(ISO_BUFFER);
winkel_aktuell=winkel_aktuell+winkelschritt;
if (winkel_aktuell>=360.0) winkel_aktuell=0.0;
}
}
double sin_grad(double winkel)
{
double zahl;
zahl=sin(winkel*pi/180);
return(zahl);
}
double cos_grad(double winkel)
{
double zahl;
zahl=cos(winkel*pi/180);
return(zahl);
}
Der Beitrag wurde von sharky bearbeitet: 30.04.2009, 10:25 Uhr
Angehängte Datei(en)

Vollkreis.txt ( 212.04KB )
Anzahl der Downloads: 24