[c++]Trójkąt z gwiazdek o podanej wysokości i szerokośći


(J Mackowiak97) #1

Dopiero zaczynam przygodę z c++, mógłby mi ktoś powiedzieć gdzie popełniłem bład. z tego kodu wychodzi mi prostokąt o podanych bokach, jak zrobić z niego trójkąt.  

#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
 int szerokosc,wysokosc;

 cout << "SZEROKOSC=";
 cin >> szerokosc;

 cout << "WYSOKOSC=";
 cin >> wysokosc;

 cout << endl;
 for(int i=1; i <= wysokosc; i++)
 {
 for (int j=1; j <=szerokosc; j++)




 cout << "*";
 cout<<endl;
 }

 cout << endl;

 return 0;
}

(Grzelix) #2

http://zadankocpp.blogspot.com/2013/05/rysowanie-trojkata-rownoramiennego-z.html

 

http://forum.dobreprogramy.pl/c-zbuduj-tr%C3%B3jk%C4%85t-t345603/


(J Mackowiak97) #3

chodzi o podanej wysokości i szerokości


(Grzelix) #4

To wyjaśńi jak ma wyglądać trójkąt dla wejścia np:

2 na 20

 

20 na 3

 

bez tych informacji nie jestem wstanie udzielić poprawnej odpowiedzi.

 

Zadania które napisałeś jest częstym zadaniem dla osób początkujących z programowaniem, ale z przypadkiem podawania dwóch wartości jeszcze się nie spotkałem.


(J Mackowiak97) #5

 

 

należy w drugiej pętli for wpisać funkcje liniową zamiast “szerokosc” - pytanie jaką


(pocolog) #6

podziel szerokość przez wysokość i wyjdzie ci jaki masz robić skok pętli w jednym kroku do ustalonej wysokości aby zakończyć na ustalonej szerokości… tak sobie myślę :wink:

edit.

tzn ile gwiazdek na skok masz dodawać :wink:


(kostek135) #7

Co zrobić, jeśli nie dzieli się równo?

 

To pytanie powinno być skierowane do ciebie. grzelix mało czytelnie pyta o np. przypadek 6 na 8, kiedy nie mamy równego podziału.

Screenshot_12_11_2014_21_14_42.png

Jak widać oba przedstawiają sytuacje 6 na 8, tylko prosta graniczna w jednym jest rysowany z lewej do prawej, a w drugiej z prawej do lewej. Nie istnieje też jedna odpowiedź na to, który piksel powinniśmy wziąć jako przybliżenie, a ty tego nie określiłeś.

To co mogę pomóc:

  1. Twój problem nazywa się rasteryzacją odcinka

  2. Przydatny może tu być algorytm: http://en.wikipedia.org/wiki/Bresenham’s_line_algorithm


(pocolog) #8

(Grzelix) #9

Widzę że niektórzy mocno poszaleli tutaj z tym zadaniem. Moim zdaniem ktoś przekombinował z zadaniem, albo @JacekM97 nie do końca dobrze opisał problem.

Czytając zadanie, widziałem tutaj próbę nauczenia jak używać pętli, podwójnej pętli, ewentualnie pracy z wyświetlaniem na konsoli.

Bo jeśli chcemy mnożyć problemy to dodajmy jeszcze takie przypadki:

Co gdy na wejściu otrzymamy:

a) 0 (jako szerokość albo wysokość)

b) liczbę ujemną

c) liczbę zmiennoprzecinkową

d) liczbę rzędu 10e12

e) wartość nie numeryczną

Wracając na ziemię:

Czy piramidka ma się zaczynać 1 gwiazdką u góry i kończyć podaną szerokości na dole?

Dalej- jakie są wartości brzegowe - czyli jakie maksymalne i minimalne wartości są przyjmowane przez aplikację.