9.4. Napisati rekurzivnu funkciju void koja za dato n iscrtava trougao dimenzije n x n. Napr za n=7:
Opis programa: Na slici je prikazan odnos redova i kolona.
|
Slika 1. Sporedna dijagonala i+j = n+1 |
Listing programa:
/* 09413126 nacrtaj trougao */
#include <iostream>
using namespace std;
void ispis_prazno(int prazno) { // f-ja ispis praznina prije znaka
if (prazno == 0) return; // kraj ispisa prazno
cout << " "; // 1 mjesto prazno i 1 za razmak izmedju znakova
ispis_prazno(prazno - 1); // ispis prazno; rekurzija
}
void ispis_znak(int znak) { // f-ja ispis znaka
if (znak == 0) return; // kraj ispisa znakova?
cout << "*"; // ispisa znaka
ispis_znak(znak - 1); // ispis znaka; rekurzija
}
void trougao(int n, int num) { // upravljanje ispisom prznina i znaka
if (n == 0)
return;
ispis_prazno(n - 1);
ispis_znak(num - n + 1);
cout << endl;
trougao(n - 1, num); // upravljanjem ispisom; rekurzija
}
int main() {
int broj; // broj redova 7
cout<<"Broj redova: ";
cin>>broj;
cout<<endl;
trougao(broj, broj); // nacrtaj trouga n x n
return 0;
}
Ispis na ekranu:
Index
|