Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

problem sa petljama

[es] :: Perl :: problem sa petljama

[ Pregleda: 3057 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

blanka

Član broj: 12914
Poruke: 2
*.dialup.mindspring.com



Profil

icon problem sa petljama10.08.2003. u 22:02 - pre 210 meseci
Problem je sledeci: Napisati program sa 2 varijable, height and width sa vrijednostima 11 i 9. Koristeci ove varijable program treba generisati sledeci output:


*
***
*****
*******
***********
*******
*****
***
*

Kode treba biti takav da vrijednosti varijabli nisu fiksne, tj. da kode radi i sa drugim neparnim vrijednostima, npr. 15 i 13 itd. Ovdje je kode koji printa pola ovog 'dijamanta'.

for ($height = 0; $height <= 6; $height++) # print first 6 rows, increamenting
{
for ($width = $height; $width >= 1; $width--) # print columns, decreamenting
{
print "*";
}
print "\n"; # print new lines
}
for ($height = 5; $height >= 1; $height--) # print last five rows
{
for ($width = 1; $width <= $height; $width++) # print columns
{
print "*";
}
print "\n"; #print new line
}

Da li neko ima ideju kako isprintati cijeli 'dijamant' sa vrijednostima za height i width, koje nisu fiksne.

blanka
 
Odgovor na temu

alkal
Aleksandar Kalanj
Beograd

Član broj: 7960
Poruke: 26
*.ptt.yu

Jabber: alkal@elitesecurity.org
Sajt: wapdata.co.cc


Profil

icon Re: problem sa petljama13.08.2003. u 17:48 - pre 210 meseci
Može ovako:
Code:


crtaj_dijamant(13, 15);

sub crtaj_dijamant
{
    ($sirina, $visina) = @_;

    $x_sredina = int($sirina / 2);
    $y_sredina = int($visina / 2);

    $k1 = ($y_sredina - 0) / (0 - $x_sredina);
    $k4 = $k1;
    $k3 = $k2 = -$k1;

    # Pomak po y osi prave paralelne datoj (rastojanje izmedju njih je 0,5):
    $pomak = 0.5 * sqrt(1 + $k2*$k2);
    $n1 = 0 - $k1 * $x_sredina - $pomak;
    $n2 = 0 - $k2 * $x_sredina - $pomak;
    $n3 = $visina-1 - $k3 * $x_sredina + $pomak;
    $n4 = $visina-1 - $k4 * $x_sredina + $pomak;

    for ($y=0; $y<$visina; $y++) {
        for ($x=0; $x<$sirina; $x++) {
            if ( ( $y >= $k1 * $x + $n1 ) &&
                 ( $y >= $k2 * $x + $n2 ) &&
                 ( $y <= $k3 * $x + $n3 ) &&
                 ( $y <= $k4 * $x + $n4 )   ) {
                print "*";
            } else {
                print " ";
            }
        }
        print "\n";
    }
}


Budući da je problem bio u algoritmu mislim da ova tema više odgovara forumu "Art of Programming".
Prikačeni fajlovi
 
Odgovor na temu

blanka

Član broj: 12914
Poruke: 2
*.dialup.mindspring.com



Profil

icon Re: problem sa petljama16.08.2003. u 23:48 - pre 210 meseci
Aleksandar,

zahvaljujem na odgovoru. Ovaj forum je odlican.

blanka
 
Odgovor na temu

alkal
Aleksandar Kalanj
Beograd

Član broj: 7960
Poruke: 26
*.ptt.yu

Jabber: alkal@elitesecurity.org
Sajt: wapdata.co.cc


Profil

icon Re: problem sa petljama17.08.2003. u 14:50 - pre 210 meseci
Citat:
Ovaj forum je odlican.

Da znaš da jeste.

Evo i ilustracije za slučaj širina=7, visina=5:
Prikačeni fajlovi
 
Odgovor na temu

[es] :: Perl :: problem sa petljama

[ Pregleda: 3057 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.