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

Napisz program drukujący na ekranie trójkąt. Wysokość trójkąta wczytujemy z klawiatury.

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
3,017 wizyt
pytanie zadane 6 października 2020 w C i C++ przez eternal Użytkownik (620 p.)

stworzylem trojkat ktory w srodku ma znaki biale. "X" tylko na podstawach. Nie potrafie natomiast zrobic podstawy trojkata wypelnionej "X" jaka logika sie za tym kryje aby podstawa w zaleznosci od wielkosci podanej przez uzytkownika nie byla narysowana jak powyzsze, ze tylko krawedzie sa wyszczegolnione? Ale zeby ostatni rzad byl caly w X inaczej mowiac obwod trojkata ma byc zaznaczony, reszta to znaki puste. Wykonane tylko za pomoca petli bez tablic itd.

ogolnie jezeli ktos znalazl rozwiazania do zadan Gajdy to bylbym wdzieczny za podanie strony.

 

2 odpowiedzi

+1 głos
odpowiedź 6 października 2020 przez Whiskey_Taster Pasjonat (15,610 p.)
wybrane 8 października 2020 przez eternal
 
Najlepsza

Zapewne rozważamy tylko trójkąty prostokątne. 
 

#include <iostream>


main()
{
    int height = 18;

    for (int i = 0; i < height - 1; i++)
    {
        std::cout << "X";

        // Tworzenie przestrzeni pomiędzy wysokością, a dłuższym bokiem
        for (int j = 0; j < i; j++)
            std::cout << " ";
        // Tworzenie dłuższego boku
        if (i)
            std::cout << "X";
        std::cout << std::endl;

    }
    // Tworzenie podstawy trójkąta
    for (int i = 0; i < height + 1; i++)
        std::cout << "X";

    return 0;
}

Ogółem pomysł wygląda następująco: 
pierwsza pętla odpowiada za poruszanie się po liniach - czyli wysokości trójkąta, ale bez ostatniego rzędu, czyli miejsca na podstawę. Dlatego w warunku mamy height - 1. Następnie już w pętli na samym początku wypisujemy X - w ten sposób tworzymy wysokość trójkąta. Potem jest pętla odpowiadająca za spacje, czyli naszą pustą przestrzeń. Potem sprytnie wykorzystujemy zliczanie iteracji pętli - if(i). Dla i = 0 nie musimy tworzyć dłuższego ramienia trójkąta, zaś dla i > 0 instrukcja wykona się zawsze, tak więc zawsze po spacjach dostaniemy X. 
Na koniec, jak już wyjdziemy z pętli głównej, wchodzimy w pętlę odpowiadającą za podstawę. Tam mamy warunek height + 1. Dlaczego tak? Ponieważ wcześniejsza linia ma dokładnie height znaków - pierwszy X, height - 2 spacji oraz ostatni X. Razem daje nam to height znaków, więc ostatecznie musimy wykonać ostatnią pętlę height + 1 razy. 

0 głosów
odpowiedź 6 października 2020 przez TOM_CPP Pasjonat (22,640 p.)
edycja 6 października 2020 przez TOM_CPP

Trójkąt równoboczny:

#include <iostream>

using namespace std;

void printTriangle( const int height , char mark = 'X' )
{
    for( int i {0} ; i<height ; ++i ) cout << string( height-i , ' ' ) << mark << string( ( i==0 ? 0 : 2*i-1 ) , ( i == height-1 ? mark : ' ' ) )+( i==0 ? "" : string{mark} ) << endl;
}

int main()
{
    printTriangle(18);
    return 0;
}

 

Podobne pytania

0 głosów
1 odpowiedź 2,276 wizyt
+1 głos
3 odpowiedzi 1,212 wizyt
0 głosów
1 odpowiedź 625 wizyt

93,180 zapytań

142,194 odpowiedzi

321,991 komentarzy

62,511 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 1873p. - dia-Chann
  2. 1848p. - Łukasz Piwowar
  3. 1831p. - CC PL
  4. 1827p. - Łukasz Eckert
  5. 1769p. - Michal Drewniak
  6. 1761p. - Łukasz Siedlecki
  7. 1758p. - rucin93
  8. 1708p. - Adrian Wieprzkowicz
  9. 1680p. - Tomasz Bielak
  10. 1668p. - Mikbac
  11. 1621p. - rafalszastok
  12. 1506p. - Marcin Putra
  13. 1356p. - ssynowiec
  14. 1289p. - Anonim 3619784
  15. 1169p. - Grzegorz Aleksander Klementowski
Szczegóły i pełne wyniki

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...