• 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

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

92,452 zapytań

141,262 odpowiedzi

319,079 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...