Trójkąty z gwiazdek

0

Cześć,
jak zrobić trójkąty z gwiazdek, żeby były koło siebie, a nie jak w programie poniżej jeden pod drugim?

program zad;

{$APPTYPE CONSOLE}

uses
  SysUtils;
var
  i,j,n,k,x:integer;
begin
  readln(n);
  k:=n+1-i;
  for x := 1 to n-1 do begin
  for i := 1 to n-x+1 do begin
    for j := n-i downto 1 do
      write('-');
    for j := 1 to i*2-1 do
    write('*');
    writeln;
  end;
  end;
    readln;
end. 
0

A może byś tak wkleił przykładowe wyjście konsoli, żeby było wiadomo co i jak bez kompilowania..? o.O

Widzę że to duży problem, więc sam to zrobię:

4
---*
--***
-*****
*******
---*
--***
-*****
---*
--***

Teraz Ty przerób powyższe, tak aby było wiadomo czego oczekiwać od kodu; Ogólnie masz dwa rozwiązania - albo tworzysz od razu gotową linię z kawałkami wszystkich trójkątów (trudniejsze), albo używasz procedury GoToXY z odpowiednim offsetem i rysujesz trójkąty po kolei (łatwiejsze);

Najpierw jednak pokaż jak ma wyglądać przykładowe wyjście dla liczby 4;

PS: Jak już piszesz kod to zwracaj uwagę na to, co podpowiada kompilator:

project1.lpr(11,10) Warning: Variable "i" does not seem to be initialized
project1.lpr(8,9) Note: Local variable "k" is assigned but never used
0

Chodzi mi o to, żeby program definitywnie pokazywał taki obraz. Możecie mi pomóc jak to zrobić, bez żadnej procedury?

5
----*
---***------*
--*****----***----*
-*******--*****--***--*
************************
 
0

Możecie mi pomóc jak to zrobić, bez żadnej procedury?

To akurat nie ma znaczenia - cały kod można napisać w głównym bloku, a można też podzielić go na wiele procedur;

Dlaczego podając liczbę 5, program ma narysować cztery górki? To celowe? Tak to ma działać?

0

Jakby było 5 trójkątów to ostatni musiałby się składać z jednej gwiazdki, a to by raczej nie przypominało trójkąta, dlatego przy liczbie 5 pokazuje tylko 4 "górki"

0

Pomoże mi ktoś jaką mam użyć pętle, żeby np. dla n podanego 5 wychodziło takie coś?

 5
----*
---***------*
--*****----***----*
-*******--*****--***--*
************************
0

Czy może być tak:

5
----*-------------------
---***------*-----------
--*****----***----*-----
-*******--*****--***--*-
************************

?

0

Czy może być Python?

ile = input("Ile wierszy ")
def otocz(s):
    if(len(s) == 1):
        return kreski + s
    else:
        return kreski + s + kreski
kreski = (ile-1)*'-'
podstawy = []
for i in range((2*ile)-1,0,-2):
    podstawy.append(i*'*')
for i in range(ile):
    wiersz = ""
    for k in range(len(podstawy)-i-1,len(podstawy),1):
        wiersz = wiersz + otocz(podstawy[k])
    print(wiersz)
    kreski = kreski[0:len(kreski)-1]

Imho, zadanie nie jest trywialne.

0
_13th_Dragon napisał(a):

Czy może być tak:

5
----*-------------------
---***------*-----------
--*****----***----*-----
-*******--*****--***--*-
************************

?

Może być, ale wolałbym te moje rozwiązanie i najlepiej delphi, bo na razie tylko z nim miałem do czynienia.

0

Przecież nie masz jeszcze rozwiązania ...

0

Chodziło mi o to, że wole delphi od pythona, a z tym, że wolę moje rozwiązanie to chodziło mi o

  5
----*
---***------*
--*****----***----*
-*******--*****--***--*
************************
0

Ok, skoro masz rozwiązanie to temat jest zamknięty?

0
var
  a, b, c, n: Integer;
begin
  Write('Podaj n: ');
  Readln(n);
  for a:= 1 to n do begin
    for b:= 1 to a do begin
      for c:= 1 to n-a do Write('.');
      for c:= 1 to 2*(a-1)-2*(b-1)+1 do Write('*');
      if b<a then for c:= 1 to n-a do Write('.');
    end;
    Writeln;
  end;
  Readln;
end.

PS. Jedną gwiazdkę masz gratis :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1