• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C# - Trójkąt bez środka

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
0 głosów
1,612 wizyt
pytanie zadane 16 października 2018 w C# przez aXen Początkujący (390 p.)

Witam,
Napisałem kod na trójkąt prostokątny.

using System;

namespace Trójkąt
{
    class Program
    {
        static void Main(string[] args)
        {
            int i, j, n;
            Console.Write("Podaj wysokość trójkąta: ");
            n = Convert.ToInt32(Console.ReadLine());

            for (i = 1; i <= n; i++)
            {
                for (j = 1; j <= n-i; j++) Console.Write(" ");
                for (j = 1; j <= i; j++) Console.Write("X");
                Console.WriteLine("");
            }
            Console.ReadKey();
        }
    }
}

I mam zrobić tak, aby ten trójkąt miał środek pusty.
Nie mogę używać "if", lecz chciałbym zobaczyć również z "if".
Prosiłbym jeszcze o wytłumaczenie matematyczne dlaczego takie działanie. Chcę spróbować tak również z innymi figurami.

komentarz 16 października 2018 przez X3h Dyskutant (9,540 p.)
Co to jest trójkąt z pustym środkiem? Możliwe, że chodzi ci o program, który powie czy istnieje możliwość stworzenia trójkąta prostokątnego z podanych długości boków. Pitagoras kiedyś nad tym kminił.
komentarz 16 października 2018 przez aXen Początkujący (390 p.)
Chodzi o rysowanie trojkata w konsoli (Tylko jego obwód).
komentarz 17 października 2018 przez X3h Dyskutant (9,540 p.)
To podchodzi o algorytm rysowania prostej Bresenhama czyli piksel po pikselu.
komentarz 17 października 2018 przez aXen Początkujący (390 p.)
No tak, ale nie chcę jej użyć. Powiedziano nam na zajęciach że mamy to zrobić w pętli for.
komentarz 17 października 2018 przez X3h Dyskutant (9,540 p.)
Nie idzie tego inaczej zrobić. Może długość przeciwprostokątnej ma być taka aby dało się narysować ją pod kątem 45 stopni. To jest jakieś rozwiązanie, ale ogranicza. To znaczy, że jeśli c^2 = a^2 + b^2 i a i b są równe to wtedy a = sqrt(c^2/2). Podajesz długość przekątnej trójkąta prostokątnego i wyliczasz jego równe przeciwprostokątne. Ale, ale nie zawsze uzyskasz liczby naturalne więc to rozwiązanie jest trochę słabe. Chyba, że zaznaczysz w założeniach, że oczekujesz dla rzeczywistej dodatniej długości przekątnej, że długości przeciwprostokątne są równe i zawierają się w liczbach naturalnych.

1 odpowiedź

0 głosów
odpowiedź 21 października 2018 przez Crash182 Gaduła (3,600 p.)
edycja 21 października 2018 przez Crash182

Hey, jako że nie jestem jakiś pro z matmy ale chciałeś też coś na "ifach" oto moja implementacja.

PS. na pewno przynajmniej rozszerzalna :)

 Pozdrawiam

using System;

namespace ConsoleApp6
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Podaj wysokość trójkąta: ");
            var n = Convert.ToInt32(Console.ReadLine());

            IShape shape = new Triangle(n);

            shape.Render();

            Console.ReadLine();
        }
    }

    public interface IShape
    {
        void Render();
    }

    public class Triangle : IShape
    {
        private const char BlackPixel = 'x';
        private const char WhitePixel = ' ';
        private const int StartingPoint = 1;
        private readonly int _height;
        private int _row;
        private int _column;

        public Triangle(int height)
        {
            _height = height;
        }


        public void Render()
        {
            for (_row = StartingPoint; _row <= _height; _row++)
                RenderLine();

        }

        private void RenderLine()
        {
            for (_column = StartingPoint; _column <= _row; _column++)
                RenderPixel();

            Console.WriteLine("");
        }

        private void RenderPixel()
        {
            if (_column == StartingPoint || _column == _row || _row == _height)
                Console.Write(BlackPixel);

            else
                Console.Write(WhitePixel);
        }
    }
}

 

Podobne pytania

0 głosów
1 odpowiedź 492 wizyt
pytanie zadane 20 października 2018 w C i C++ przez MAXIM7 Obywatel (1,990 p.)
0 głosów
1 odpowiedź 294 wizyt
pytanie zadane 9 stycznia 2017 w Inne języki przez Bind Nowicjusz (150 p.)
0 głosów
1 odpowiedź 132 wizyt
pytanie zadane 3 maja 2022 w JavaScript przez Maciek06 Użytkownik (680 p.)

90,818 zapytań

139,493 odpowiedzi

313,553 komentarzy

60,311 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...