Kugel mit Sternchen in C Zeichnen (Konsolenanwendung)



  • Hallo,

    wie der Titel schon sagt, möchte ich in C eine Kugel zeichnen lassen. Das Ganze soll als Konsolenanwendung funktionieren - also die Kugel soll aus lauter Sternchen(*) bestehen.

    Hab mir das so vorgestellt:

    Benutzer gibt einen Durchmesser an.
    Je nach Durchmesser soll die Kugel dann beliebig viele Zeilen umfassen.

    Habe es schon selbst versucht, komme aber nicht zu einer vernünftigen Lösung.

    Ich hoffe daher, dass ihr mir helfen könnt.

    #include <stdio.h>
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        int d,i,j,k;
    
        printf("Durchmesser: ");
        scanf("%d",&d);
    
        for(i=1;i<=d;i++)
        {
            for(j=1;j<=(d/2)-i;j++)
            {
                printf(" ");
            }
    
            for(/*hier komme ich nicht weiter :)*/)
            {
                printf("*");
            }
        }
    
        getchar();
        return 0;
    }
    

  • Mod

    Ein Punkt liegt dann in einem Kreis, wenn sein Abstand vom Mittelpunkt kleiner ist als der Radius. Hilft dir dieser Tipp bei deinen Hausaufgaben weiter?



  • Hallo,

    ist nicht wirklich eine Hausaufgabe :). Dient jediglich zur Übung.

    Jedoch komme ich nicht weiter:

    int _tmain(int argc, _TCHAR* argv[])
    {
        int d,i,j,k;
    
        printf("Durchmesser: ");
        scanf("%d",&d);
    
        for(i=1;i<=d;i++)
        {
            for(j=1;j<=(d/2)-i;j++)
            {
                printf(" ");
            }
    
            for(k=1;k<=d/2;k++)
            {
                printf("*");
            }
            printf("\n");
        }
        fflush(stdin);
        getchar();
        return 0;
    }
    

  • Mod

    Ein bisschen mehr Mühe bitte, sonst mag dir keiner helfen. Einfach wild Loslegen ohne Nachzudenken hilft niemandem weiter. Mal mal einen Kreis auf einem Karoblock. Dann gehst du Zeile für Zeile den Block durch und guckst dir an, wodurch sich die ausgefüllten Kästchen in der Zeile von den unausgefüllten Kästchen unterscheiden. Vielleicht hilft dir dabei mein letzter Tipp weiter, den du bisher offensichtlich nicht verstanden hast.



  • Werde ich machen, morgen.



  • Ich vermute, du suchst hiernach.



  • Es tur mir leid, aber ich komme einfach nicht drauf. Bin jetzt ne Stunde dran gesessen, habs auf Block gezeichnet - aber ich schaffs nicht.


  • Mod

    sensvi schrieb:

    Es tur mir leid, aber ich komme einfach nicht drauf. Bin jetzt ne Stunde dran gesessen, habs auf Block gezeichnet - aber ich schaffs nicht.

    Du wirst gerettet durch samstagmorgendliche Langeweile. Du hast wirklich Glück. Dafür gibt es aber keine Erklärung, sondern du musst wenigstens hier einmal selber nachdenken.

    #include <stdio.h>
    
    unsigned int dist_sqr(int x1, int y1, int x2, int y2)
    {
      return (x1-x2)*(x1-x2) + (y1-y2)*(y1-y2);
    }
    
    int main()
    {
      int radius;
      printf("Radius: ");
      scanf("%d",&radius);
      unsigned int radius_sqr=radius*radius;
    
      int zeile, spalte;
      for (zeile=-radius; zeile<=radius; ++zeile)
        {
          for (spalte=-radius; spalte<=radius; ++spalte)
            if (dist_sqr(zeile,spalte,0,0) < radius_sqr)
              putchar('#');
            else putchar(' ');
          putchar('\n');
        }
      return 0;
    }
    


  • Vielen Dank!


Anmelden zum Antworten