Wpis z mikrobloga

Cześć, może ktoś będzie w stanie mi w tym pomóc.

Mam do napisania kod, który wpisze trójkąt prostokątny z gwiazdek, coś takiego:
*

*
**
***

Gdzie ostatnia linijka ma być równa wartości, którą wpiszę do pola.
Udało mi się to zrobić w pętli, ale muszę zrobić to jeszcze na dwa sposoby:
1) Przyrastający łańcuch znaków,
2) Rekurencyjnie.

Domyślam się że w przypadku sposoby 1) muszę użyć funkcji FOR i IF, jednak utknąłem i mój program wypisuje tylko jedną gwiazdkę.

Czy ktoś mógłby mnie nakierować?
Z góry dzięki :)
#programowanie

y=:Ilosc;
FOR(y-1)
{
IF (y > 0 )
{
IF (y > 0 ) INFO('*')
ELSE
INFO('/');
}

ELSE EXIT(0);

EXIT(1);
}
WHILE(1=1)
{
y=y-1;
IF (y=0) EXIT (0,1);
}
  • 13
  • Odpowiedz
@JaFracek: primo primo wrzuć to na pastebina czy cokolwiek co umie w formatowanie kodu, primo secundo napisz język chyba że oczekujesz w drugą stronę pseudokodu na zasadzie 'jeżeli X to Y'.

1) Przyrastający łańcuch znaków,

string str='*'; for(size_t s=0; s < max_len; s++) { str+='*'; printf('%s\n', str.c_str()); } - pseudokodowe C++ jbc

rekurencja


void r(ssize_t len) { if(len) r(len-1); string s(len,'*'); printf('%s\n', str.c_str()); }; r(max_len);
  • Odpowiedz
@keton22: chodzi mi bardziej o pseudokod, mam gotową listę funkcji i typów zmiennych i na ich podstawie muszę porobić takie funkcje.

Funkcja IF:
IF ((bKey = 1) & (bKey2>=8))

{

IF (TestFunkction = 'Yes') GoFunkction1

ELSE

GoFunkction2;

}

ELSE EXIT(0);



EXIT(1);

Funkcja FOR:
...

FOR(100) {...}

...

FOR(i=1,100) {...}

...

FOR(i=100,0) {...}

...



WHILE(1=1)

{

i = i+1;

IF (i=10) EXIT(0,1);

}

DIALOG(i);

...
  • Odpowiedz
@JaFracek: to jest tzw. printf string 'wydrukuj zawartość napisu' - %s i str.c_str () i daj nową linię \n. W sumie chyba man 3 printf w shellu jest najlepszą książką do tego.
  • Odpowiedz
via Wykop Mobilny (Android)
  • 0
@keton22: czyli w skrócie: wyświetla zawartość zmiennej str czyli *, następnie idzie kolejna pętla, dopisuje do tej zmiennej następna gwiazdkę i tak w kółko az osiągnę warunek zakończenia pętli?
  • Odpowiedz
@keton22: Dzięki, jeszcze jedno pytanko. Będę Ci winien dobre piwo ( ͡° ͜ʖ ͡°)

A więc dwie wiadomości. Dobra to że działa, zła że nie do końca.

Tworzy się ten prostokąt z gwiazdek, ale pętla się nie kończy / program mi się wywala. Jest tu jakiś oczywisty błąd, którego nie widzę?

x=0;
y=:Ilosc;
gwiazdka='*';

FOR(y)
{
tekst=tekst+gwiazdka;
INFO(tekst);
INFO('
');
}

WHILE(1=1)

{

x = x+1;

IF
  • Odpowiedz
@JaFracek: nie za bardzo ogarniam to co napisałeś. Poczemu są 2 pętle for+while? For z warunkiem że kręci się do czasu aż iteraror jest większy/równy zadanej ilości gwiazdek powinien wystarczyć. Też bym w programie nie robił pętli nieskończonych to rzadko kiedy kończy się dobrze.
  • Odpowiedz
via Wykop Mobilny (Android)
  • 0
@keton22: masz rację, chwilę po tym jak napisałeś wpadłem na to i poprawiłem. Mecze się tylko z rekurencja. Mając te funkcje jakie mam nie mogę napisać kodu, który stworzy działająca zmienna string = x * y, gdzie x to gwiazdka , a y to liczba gwiazdek,która ma wykonać w danej linii. Kłócą mi się tutaj stringi z int.
To zostawiam sobie na później, na razie jadę z innymi zadaniami ;)

Dzięki
  • Odpowiedz