Dies ist eine alte Version des Dokuments!


Mögliche Lösung zum Kreis ausgeben

Die Aufgabenstellung finden Sie hier

circle.c
// Programm für Linux! benutzt ANSI Escape Sequenzen. 
// Jede Konsole, die sich an den POSIX-Standard hält kann den Kreis "ordentlich" anzeigen.
 
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
// SKALIERUNG DES EINHEITSKREISES!!!!
#define RADIUS 10
 
int main () 
{
    //     x*x + y*y = r*r
    // <=> y=sqrt(r*r-x*x)
 
    // clear screen
    printf ("\x1B[2J");
 
    for (double x=0; x<=RADIUS; x++)
    {
        double y=sqrt ( (RADIUS*RADIUS) - (x*x) );
 
        printf ("\x1B[%i;%iH", (int) y+11, (int) x+11);
        putchar ('+');
        printf ("\x1B[%i;%iH", (int) -y+11, (int) x+11);
        putchar ('+'); 
        printf ("\x1B[%i;%iH", (int) -y+11, (int) -x+11);
        putchar ('+');            
        printf ("\x1B[%i;%iH", (int) y+11, (int) -x+11);
        putchar ('+');
    }
 
    for (double y=0; y<=RADIUS; y++)
    {
        double x=sqrt ( (RADIUS*RADIUS) - (y*y) );
 
        printf ("\x1B[%i;%iH", (int) y+11, (int) x+11);
        putchar ('+');
        printf ("\x1B[%i;%iH", (int) -y+11, (int) x+11);
        putchar ('+'); 
        printf ("\x1B[%i;%iH", (int) -y+11, (int) -x+11);
        putchar ('+');            
        printf ("\x1B[%i;%iH", (int) y+11, (int) -x+11);
        putchar ('+');
    }
 
    printf ("\x1B[%i;%iH", (int) RADIUS*2+2, (int) 0);
 
    return 0;
}

Übersetzung mit (-lm um die Mathebibliothek ins Programm zu linken):

gcc circle.c -lm