aragorn280
6.10.2020, 13:27:53
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
6.10.2020, 15:21:45
Zadanko domowe?

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
6.10.2020, 15:39:35
Obrócić do góry nogami
SmokAnalog
6.10.2020, 15:48:30
Spróbuj sam i daj znać jak idzie.
aragorn280
6.10.2020, 16:15:28
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 '*  ';
}else if($j==$i || $j==$bok){
echo '*   ';
}else {
echo '    ';
}
}
echo '<br>';
}
}
hop($bok)
?>
</body>
</html>
zmodyfikuj drugie for na to:
Kod
for($j=1;$j<=$i;$j++)
edit:
moim zdanie pierwsza funkcja działała lepiej
aragorn280
6.10.2020, 16:26:26
Jasne chciałem tylko wypróbować 2 warianty

Dzięki za pomoc
SmokAnalog
6.10.2020, 16:35:57
Fajnie gino, że podsuwasz uczniowi gotowce. Dzięki tobie niczego się nie nauczy
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
6.10.2020, 20:17:34
Już go poprawiłem, ale oczywiście możesz podesłać swoje rozwiązanie jeśli chcesz
pokaż tą funkcję, mają być wszystkie boki trójkąta jako gwiazdki, środek pusty.
aragorn280
6.10.2020, 20:36:44
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 '*  ';
}else if($j<=1 || $j==$i){
echo '*  ';
}else {
echo '    ';
}
}
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 "*  ";
}else if($j<=$i || $j==$bok){
echo '*  ';
}else{
echo '    ';
}
}
echo '<br>';
}
}
hop($bok)
?>
</body>
</html>
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
6.10.2020, 20:42:47
zapewne jest to kwestia spacji ,ale to tylko kwestia wizualna. Sądze ze na sprawdzianie by uznali
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)
?' '
:'*';
}
$str .= '<br>';
}
return $str;
}
echo hop($bok);
wrzucająć zamiast   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.