Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Losowanie 'randomowego znaku z ciągu nazwy
7ohn
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 24.11.2015

Ostrzeżenie: (0%)
-----


Witam, mam problem z pewnym prostym skryptem, lecz ja coś mi nie wychodzi.
Skrypt polega na losowaniu znaku z ciągu nazwy.
Tu jest fragment kodu

  1. <?php
  2. // Use rand() to print a random number to the screen
  3. ?>
  4. </p>
  5. <p>
  6. <?php
  7.  
  8.  
  9. $name = "Johnny";
  10.  
  11. // Use your knowledge of strlen(), substr(), and rand() to
  12. print ("Długość znaków ". strlen($name)."<br>");
  13. print ("Wyodrębnienie poszczególnych ciągów ". substr($name, 0, strlen($name)))."<br>";
  14.  
  15.  
  16. // questionmark.gifquestionmark.gif
  17. print ("Losowanie randomowego znaku z nazwy ". ));
  18. //??
  19. // print a random character from your name to the screen.
  20.  
  21. ?>


Zadanie to pochodzi z platformy e-learningowej codecademy.com

Sugerują mi użyć do tego substr, strlen. Próbowałem kilka sposobów, lecz wywala mi cały czas błąd.

Proszę o pomoc, i wyjaśnienie tego rozwiązania.
Pozdrawiam
Go to the top of the page
+Quote Post
Pyton_000
post
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


musisz losować znak z przedziało 0, length()-1 a potem substr od tego znaku w ilości 1
Go to the top of the page
+Quote Post
7ohn
post
Post #3





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 24.11.2015

Ostrzeżenie: (0%)
-----


dobra mam takie coś
  1. print ("Losowanie randomowego znaku z nazwy ". rand(0,strlen($name) - 1)."<br>")

Zwraca mi indeks znaku, natomiast dalej nie wiem jak zapisać ze
.
Go to the top of the page
+Quote Post
mar1aczi
post
Post #4





Grupa: Zarejestrowani
Postów: 731
Pomógł: 141
Dołączył: 9.05.2011
Skąd: śląskie

Ostrzeżenie: (0%)
-----


Zajrzyj do opisu tej funkcji: http://www.php.net/substr


--------------------
Szanuj innych czas! Kliknij , gdy pomocną wskazówkę otrzymasz.
Go to the top of the page
+Quote Post
Crozin
post
Post #5





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Taka dodatkowa wskazówka: najprawdopodobniej pracujesz w kodowaniu UTF-8, a przynajmniej powinieneś dlatego musisz korzystać z funkcji mb_*(), tj. mb_substr, mb_strlen.
Go to the top of the page
+Quote Post
7ohn
post
Post #6





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 24.11.2015

Ostrzeżenie: (0%)
-----


ok, stworzyłem taki oto kod
  1. print ("Losowanie randomowego indeksu znaku z nazwy ". rand(0,strlen($name) - 1))."<br>";
  2.  
  3. $length = rand(0,strlen($name) - 1);
  4. print ("Losowany znak z nazwy to: ".substr($name,$length ,1));


Teoretycznie wszystko działa, lecz nadal wywala błąd.

Ten pseudo interpreter wyświetla komunikat: The random output you printed from your name should be just one character.

Ten post edytował 7ohn 24.11.2015, 14:46:03
Go to the top of the page
+Quote Post
mar1aczi
post
Post #7





Grupa: Zarejestrowani
Postów: 731
Pomógł: 141
Dołączył: 9.05.2011
Skąd: śląskie

Ostrzeżenie: (0%)
-----


Popatrz na pierwszą i trzecia linie swojego kodu - pewna cześć się powtarza. To co zobaczysz jako wynik z pierwszej linii będzie inne niż to z trzeciej linii.,


--------------------
Szanuj innych czas! Kliknij , gdy pomocną wskazówkę otrzymasz.
Go to the top of the page
+Quote Post
7ohn
post
Post #8





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 24.11.2015

Ostrzeżenie: (0%)
-----


rzeczywiście trochę pomieszałem


  1. $length = rand(0,strlen($name) - 1);
  2. print ("Losowany znak z nazwy to: ".substr($name,$length ,1));


Jednak dalej pokazuje komunikat, że powininen być jeden character.
Go to the top of the page
+Quote Post
Pyton_000
post
Post #9





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


echo substr($name,$length ,1);

Pokaż całą treść zadania. Bo tam powinieneś mieć napisane jaki output ma być.

Ten post edytował Pyton_000 24.11.2015, 15:04:53
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




A co sie dziwisz?? Procz jednego znaku, jak ci kazano, wyswietlasz jeszcze to:
Losowany znak z nazwy to:
to logiczne ze ci zadania nie zaliczaja


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
7ohn
post
Post #11





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 24.11.2015

Ostrzeżenie: (0%)
-----


Rzeczywiście usunąłem "Losowany znak z nazwy to: " i zaakceptowano.
Dzięki wszystkim za pomoc.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 17:53