E-gradiva > Računalništvo > Programiranje > Upravljanje s programirljivimi napravami > Funkcije > Primeri > Program za izris lika

Prijava



// Podatkovna zbirka: lik.cpp
// Program za izris lika naslednje oblike:
//
// *
// ***
// *****
// *******
// * *
// * *
// *
//
// Visino polovice lika podamo preko tipkovnice

// Poseben primer so liki, katerih dimenzije so manjse od 3.
// Za lik, ki ima visino polovice lika enako 1 se izrise: *

// Za lik, ki ima visino polovice lika enako 2 se izrise: *
// ***
// *
// Likov, ki imajo visino polovice lika vecjo od 30 ne izrisujemo.
//

#include <iostream>

using namespace std;

// Funkcija za izris dolocenega stevila zvezdic
void izris_zvezdic
(
int st_zvez) // vhod: stevilo izrisanih zvezdic


{


cout.width(st_zvez); // za izpis rezerviraj st_zvez mest
cout.fill('*'); // izpis polni z zvezdicami


cout << '*'; // izpisi zvezdico
return;
}
// konec izris_zvezdic


// Funkcija za izris dolocenega stevila praznih mest
void izris_pr_mest

(
int st_pr_mest) // vhod: stevilo praznih mest

{

cout.width(st_pr_mest); // za izpis rezerviraj st_pr_mest mest


cout.fill(' '); // izpis polni s praznimi mesti
cout << ' '; // izpisi prazno mesto


return
;
}
// konec izris_pr_mest

// Glavna funkcija za izris lika
// Lik je razdeljen na stiri razlicne dele.

// V prvem delu izrisemo prazna mesta (39 praznih mest) in zvezdico.

// V drugem delu izrisemo vec vrstic, ki vsebujejo same zvezdice.
// Stevilo zvezdic se v tem delu povecuje za dve.
// Zacetno stevilo zvezdic je enako 3.
// Stevilo praznih mest pred likom pa se v tem delu zmanjsuje za 1.
// Stevilo izrisov vrstic z zvezdicami je v tem delu enako visini
// polovice lika -1.

// V tretjem delu izrisujemo vec vrstic, ki vsebujejo zvezdico,
// stevilo praznih mest in zopet zvezdico.
// Stevilo praznih mest med zvezdicama se v tem delu zmanjsuje za dve.
// Zacetno stevilo praznih mest med zvezdicama je enako visina
// polovica lika * 2 - 5.
// Stevilo praznih mest pred likom pa se v tem delu povecuje za 1.
// Stevilo izrisov vrstic z zvezdicami je v tem delu enako
// visini polovice lika -2.

// V cetrtem delu izrisemo prazna mesta (39 praznih mest) in zvezdico.

void
main ()

{

// vnos visine polovice lika
int vis_pol_lika; // vhodni podatek, ki ga vnesemo preko tipkovnice



do
// ponavljaj dokler je visina lika manjsa od 1 ali vecja od 30
{
cout << "Vpisi sirino lika >=1 ali <= 30:";

cin >> vis_pol_lika;
}

while
((vis_pol_lika < 1) || (vis_pol_lika > 30));

// izris prvega dela lika
int st_pr_m_pred = 39; // stevilo praznih mest pred likom

izris_pr_mest(st_pr_m_pred);

cout << "*" << endl;


// izris drugega dela lika
int st_zvezdic = 3; // stevilo zvezdic


int
st_vrstic; // stevilo izrisanih vrstic v drugem
// in tretjem delu lika

if
(vis_pol_lika > 1)
{


for
(st_vrstic = 1; st_vrstic <= vis_pol_lika - 1; st_vrstic++)
{


izris_pr_mest(--st_pr_m_pred);
izris_zvezdic(st_zvezdic);
cout << endl;

st_zvezdic = st_zvezdic + 2;
}
}


// izris tretjega dela lika
int st_pr_m_med; // stevilo praznih mest med zvezdicama



if
(vis_pol_lika > 2)
{

st_pr_m_med =vis_pol_lika * 2 - 5;

st_pr_m_pred = st_pr_m_pred + 1;
for
(st_vrstic = 1; st_vrstic <= vis_pol_lika - 2; st_vrstic++)
{


izris_pr_mest(st_pr_m_pred++);
cout << "*";
izris_pr_mest(st_pr_m_med);

cout << "*" << endl;
st_pr_m_med = st_pr_m_med - 2;
}
}


// izris cetrtega dela lika
if (vis_pol_lika > 1)
{

if
(vis_pol_lika == 2)

st_pr_m_pred = st_pr_m_pred + 1;
izris_pr_mest(st_pr_m_pred);

cout << "*" << endl;
}

system("pause");

return
;
}
// konec izrisa lika