Trójkąt z gwiazdek jedną pętlą

0

Jak narysować z gwiazdek poniższy trójkąt używając jednej pętli?
Próbowałem samodzielnie zrobić, ale wychodziło mi więcej niż jedna pętla :/
przykład: n = 5

*****
-****
--***
---**
----* 
0

pokaz jak probowales robic.

0
 
var
  i,j,n : Integer;
begin
  writeln('Podaj N:');
  readln(n);
    for i := n downto 1 do
    begin
      for j := 1 to n-i do
        write(' ');
      for j:= 1 to i do 
        write ('*');
      writeln;  
    end;
  readln;
end.
	
1

Wykorzystaj funkcję DupeString.

0

Tylko lepiej bez wykorzystywania gotowych funkcji, bo potem będę musiał to zmienić na C/C++

1

No to wtedy możesz wykorzystać cout.width oraz cout.fill :P

Następnym razem podawaj wszystkie informacje od razu, bo zaraz stwierdzisz, że cout.width też nie może być, bo potem jeszcze na Pythona to będziesz musiał przepisywać.

1

tu masz wersje c++

#include <iostream>
#include <string>
using namespace std;

int main() {
	int stars = 5;
	for (int spaces = 0 ; stars > 0 ; stars--, spaces++)
	{
		cout << std::string(spaces, ' ') << std::string(stars, '*') << "\n";
	}
	return 0;
}

w pascalu, tak jak wspomnial @Patryk27 uzyj dupestring. Jak dziala wiecej tutaj
http://www.delphibasics.co.uk/RTL.asp?Name=DupeString

1

próbowałbym podobnie, jak @fasadin:

#include <iostream>
#include <string>

int main()
{
	const int n = 5;
	for (int i = n; i > 0; --i)
	{
		std::cout << std::string(n - i, '_') << std::string(i, '*') << '\n';
	}
}
program ideone;
const
	n = 5;
var
	i : Integer;
begin
	for i := n downto 1 do
		WriteLn(StringOfChar('_', n - i) + StringOfChar('*', i));
end.
1
hit02 (usunięty post) napisał(a)

Pobawił bym się tutaj wskaźnikami na stringi. Powinno dać radę bez problemu.

http://ideone.com/YptIfr

procedure DrawTriangles(ASize: UInt8);
var
  strStars, strMinuses: String;
  pchrStar, pchrMinus: PChar;
begin
  strStars   := StringOfChar('*', ASize);
  strMinuses := StringOfChar('-', ASize);
  pchrStar   := @strStars[1];
  pchrMinus  := @strMinuses[1] + ASize;

  while ASize > 0 do
  begin
    WriteLn(StrPas(pchrMinus), StrPas(pchrStar));
    Inc(pchrStar);
    Dec(pchrMinus);
    Dec(ASize);
  end;
end;

Że niby tak? :]

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