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
*****
-****
--***
---**
----*
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
*****
-****
--***
---**
----*
pokaz jak probowales robic.
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.
Wykorzystaj funkcję DupeString
.
Tylko lepiej bez wykorzystywania gotowych funkcji, bo potem będę musiał to zmienić na C/C++
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ć.
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
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.
hit02 (usunięty post) napisał(a)
Pobawił bym się tutaj wskaźnikami na stringi. Powinno dać radę bez problemu.
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? :]