• 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

Object Storage Arubacloud
0 głosów
1,913 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ź 632 wizyt
pytanie zadane 20 października 2018 w C i C++ przez MAXIM7 Obywatel (1,990 p.)
0 głosów
1 odpowiedź 333 wizyt
pytanie zadane 9 stycznia 2017 w Inne języki przez Bind Nowicjusz (150 p.)
0 głosów
1 odpowiedź 279 wizyt
pytanie zadane 3 maja 2022 w JavaScript przez Maciek06 Użytkownik (680 p.)

92,550 zapytań

141,392 odpowiedzi

319,520 komentarzy

61,935 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...