Witajcie. Miałem utworzyć program, który wyświetli znaki w następujący sposób, np:
A
BAB
CBABC
itd.
Troszkę - choć może wstyd się przyznać - musiałem nad nim pomyśleć i stworzyłem w pełni działający program, którego kod zamieszczam poniżej:
[code = c]
#include <stdio.h>
/#define n_wierszy 5/
void odstep (int a, int n_wierszy);
int main (void)
{
int i, n, n_wierszy;
char c;
printf("Wprowadz duza litere: \n");
scanf("%c", &c);
n_wierszy = c + 1 - 'A';
for (n=1; n<=n_wierszy; n++)
{
odstep (n, n_wierszy);
for(i=n_wierszy-1; i>=n_wierszy - n; i--)
printf("%c", c-i);
for(i=n-1; i>0; i--)
printf("%c", (c-n_wierszy) + i);
printf("\n");
}
return 0;
}
void odstep (int a, int n_wierszy)
{
while (n_wierszy -a > 0)
{
printf(" ");
a++;
}
}
[/code]
Program jest w 100% sprawny, działa dokładnie tak jak sobie bym tego życzył (zmodyfikowałem wcześniejszą wersję, która była sztywno ustawiona na 5 wierszy). Tu pytanie do was - czy program można było zrobić w prostszy sposób (bez użycia instrukcji if i ogólnie, bardziej zaawansowanych od pętli elementów języka C) i czy wpłynie to jakoś na wydajność programu? (tj wiem że przy takim prostym programie nie ma to znaczenia, ale chciałbym się uczyć optymalizacji kodu od piaskownicy ;))
Z góry dziękuję wszystkim za pomoc