Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Trójkąt z gwiazdek - Pomocy
Forum PHP.pl > Forum > PHP
aragorn280
Napisałem taki kod, który tworzy trójkąt z gwiazdek ,ale nie wiem jak go obrócić. DOdatkowo jakby ktos umial zrobic że widoczne sa tylko krawedzie tego trójkąta. Dziękuje za pomoc

<!doctype html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>


<?php
$bok=$_POST['bok'];


function hop($bok){
for($i=1;$i<=$bok;$i++){
for($j=$i;$j<=$bok;$j++){
echo '*';

}
echo '<br>';

}

}
hop($bok)
?>

</body>
</html>
SmokAnalog
Zadanko domowe? smile.gif

Obrócić w którą stronę?

Żeby było widać tylko krawędzie, zastanów się jaki if dać w środku, żeby wypluwać gwiazdki tylko dla skrajnych wartości.
aragorn280
Obrócić do góry nogami
SmokAnalog
Spróbuj sam i daj znać jak idzie.
gino
no i jak idzie ?
aragorn280
Okej zrobiłem że jest przezroczysty środek ,ale nie mam pomysłu jak go obrócić

<!doctype html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>


<?php
$bok=$_POST['bok'];


function hop($bok){
for($i=1;$i<=$bok;$i++){
for($j=$i;$j<=$bok;$j++){
if($i==1 || $i==$bok){

echo '*&nbsp&nbsp';
}else if($j==$i || $j==$bok){
echo '*&nbsp&nbsp&nbsp';
}else {
echo '&nbsp&nbsp&nbsp&nbsp';
}


}
echo '<br>';

}

}
hop($bok)
?>

</body>
</html>
gino
zmodyfikuj drugie for na to:

Kod
for($j=1;$j<=$i;$j++)


edit:

moim zdanie pierwsza funkcja działała lepiej
aragorn280
Jasne chciałem tylko wypróbować 2 warianty wink.gif Dzięki za pomoc
SmokAnalog
Fajnie gino, że podsuwasz uczniowi gotowce. Dzięki tobie niczego się nie nauczy specool.gif
gino
no dobrze Smoku, ale aragorn napisał, że nie ma pomysłu. Ale ok.
@aragorn warunek jest do przeróbki, dlatego pisałem, że wcześniejszy układ trójkąta lepiej mi się podobał. Pomyśl i przerób tak aby zostały tylko boki trójkąta z gwiazdek. Jeżeli napiszesz, że nie dasz rady to dam Ci rozwiązanie tego zadania. Tak dla wprawki.
aragorn280
Już go poprawiłem, ale oczywiście możesz podesłać swoje rozwiązanie jeśli chcesz
gino
pokaż tą funkcję, mają być wszystkie boki trójkąta jako gwiazdki, środek pusty.
aragorn280
chodzi o ta czy ta moja pierwsza?

<!doctype html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>


<?php
$bok=$_POST['bok'];


function hop($bok){
for($i=1;$i<=$bok;$i++){
for($j=1;$j<=$i;$j++){
if($i<=1 || $i==$bok){

echo '*&nbsp&nbsp';
}else if($j<=1 || $j==$i){
echo '*&nbsp&nbsp';
}else {
echo '&nbsp&nbsp&nbsp&nbsp';
}


}
echo '<br>';

}

}
hop($bok)
?>

</body>
</html>

Tutaj jest ta pierrwsza przerobiona

<!doctype html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>


<?php
$bok=$_POST['bok'];


function hop($bok){
for($i=1;$i<=$bok;$i++){
for($j=$i;$j<=$bok;$j++){

if($i<=1 || $i==$bok){
echo "*&nbsp&nbsp";
}else if($j<=$i || $j==$bok){

echo '*&nbsp&nbsp';

}else{
echo '&nbsp&nbsp&nbsp&nbsp';
}

}
echo '<br>';
}
}
hop($bok)
?>

</body>
</html>
gino
ten warunek przy większej ilości gwiazdek ($bok) nie domyka podstawy trójkąta. Twój warunek jest tak pokombinowany że do $bok 4-6 jest w miarę ok, później już nie.
aragorn280
zapewne jest to kwestia spacji ,ale to tylko kwestia wizualna. Sądze ze na sprawdzianie by uznali
gino
no nie do końca, nadaj na Twojego HTML-a czcionkę np. monospace, któr równo rozprowadza znaki to zobaczysz, albo wrzuć do WriteCodeOnline czy innego php online. Albo coś działa albo nie.

można to zrobić tak:

Kod
function hop($bok)
{
    $str = '';
    for($i=1;$i<=$bok;$i++){
        for($j=1;$j<=$i;$j++){
            $str .= ($j>1 && $j!==$i && $i<$bok)
                ?'&nbsp'
                :'*';
        }
       $str .= '<br>';
    }
    return $str;
}
echo hop($bok);


wrzucająć zamiast &nbsp dowolny znak ascii można wypełnić go tym znakiem
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.