Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP-problem] Palindrom
Apticer
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 26.04.2010

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


Dostałem zadanie które nie za bardzo wiem jak zrobić czy nawet się za to zabrać..

Napisz funkcję, której argumentem jest dowolny tekst. Funkcja zwraca palindrom tekstu w którym
każde słowo jest pisane od dużego znaku.
Plik z funkcją jest wczytywany do kodu HTML z osobnego pliku. Wpisany tekst i palindrom powinny
pojawić się na ekranie.

Wie ktoś może jak się za to zabrać? Jakaś gotowa funkcja?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
phpion
post
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




strrev + strtolower + ucwords

Ten post edytował phpion 26.04.2010, 12:02:03
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #3





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Sama funkcja sprawdzająca może wyglądać tak:
[ciach]



Ten post edytował batman 26.04.2010, 12:40:12
Powód edycji: [batman]: Niech sam pomyśli. W końcu to jego praca domowa


--------------------
Go to the top of the page
+Quote Post
Apticer
post
Post #4





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 26.04.2010

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


Wielkie dzięki za pomoc! smile.gif

Wiem, że dużo się nie napracowałem, ale... napotkałem mały problem...
  1. <?php
  2. $pali = "Nogawka jak wagon";
  3. echo "$pali <BR><BR>";
  4.  
  5. $pali = strrev($pali);
  6. echo "$pali <BR><BR>";
  7.  
  8. $pali = strtolower($pali);
  9. echo "$pali <BR><BR>";
  10.  
  11. $pali = ucwords(strtolower($pali));
  12. echo "$pali <BR><BR>";
  13. ?>

Teraz jako wynik zwraca coś takiego
  1. Nogawka jak wagon
  2.  
  3. nogaw kaj akwagoN
  4.  
  5. nogaw kaj akwagon
  6.  
  7. Nogaw Kaj Akwagon


A dałoby rade, żeby zwracało?
  1. Nogawka jak wagon
  2.  
  3. nogaw kaj akwagoN
  4.  
  5. nogaw kaj akwagon
  6.  
  7. Nogaw Kaj Akwagon
  8.  
  9. Nogawka Jak Wagon
Go to the top of the page
+Quote Post
phpion
post
Post #5





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Nie. Skąd skrypt ma wiedzieć, że nie ma czegoś takiego jak "Nogaw"? W zasadzie to jednak można zrobić to co chcesz winksmiley.jpg
Cytat
Nogawka jak wagon // tekst wejściowy

nogaw kaj akwagoN // tutaj mieszasz

nogaw kaj akwagon // dalej mieszasz

Nogaw Kaj Akwagon // jeszcze kombinujesz

Nogawka Jak Wagon // wyświetlasz tekst wejściowy (ten sam!) z wielkimi literami na przodzie wyrazów smile.gif
Go to the top of the page
+Quote Post
Apticer
post
Post #6





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 26.04.2010

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


@up
to się nie sprawdzi, bo musze oddać też kod php wstydnis.gif

Wpadłem na pewien (chyba dobry) pomysł, ale mam problem z realizacją...

  1. <?php
  2. $palispr = "Nogawka Jak Wagon";
  3. $pali = "Nogawka jak wagon";
  4. echo "$pali <BR><BR>";
  5.  
  6. $pali = strrev($pali);
  7. echo "$pali <BR><BR>";
  8.  
  9. $pali = strtolower($pali);
  10. echo "$pali <BR><BR>";
  11.  
  12. $pali = ucwords(strtolower($pali));
  13. echo "$pali <BR><BR>";
  14.  
  15. if ($pali = $palispr)
  16. {
  17. echo "$pali<BR><BR>";
  18. }
  19. else
  20. {
  21.  
  22.  
  23. }
  24. ?>


Chciałem zrobić tak by sprawdzało czy wynik jest równy temu co ja chciałbym, żeby wyszło. Tylko nie bardzo wiem jak zrobić pętle do tego i rozdzialić $pali na pojedyńcze znaki tak, żeby mogło je w jakiś sposób przemieszczać... Prawdopodobnie niemożliwe do realizacji, ale to mój, niestety, ostatni pomysł ;D


#Edit
Próbowałem, nie da rady - a przynajmniej ja nie wiem jak... czyli dupa ;/

Ten post edytował Apticer 28.04.2010, 14:14:26
Go to the top of the page
+Quote Post
bim2
post
Post #7





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


Żeby odczytać konkretny znak
  1. echo $pali{1};

smile.gif Kombinuj z przesuwaniem spacji winksmiley.jpg


--------------------
Go to the top of the page
+Quote Post
celbarowicz
post
Post #8





Grupa: Zarejestrowani
Postów: 253
Pomógł: 31
Dołączył: 30.03.2009
Skąd: Szczecin

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


kobyła ma mały bok
Go to the top of the page
+Quote Post
Daniel Meger
post
Post #9





Grupa: Zarejestrowani
Postów: 20
Pomógł: 2
Dołączył: 30.04.2010
Skąd: PL

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


Cały misz-masz rozgrywa się w funkcji place_spaces(). Jeżeli czegoś nie rozumiesz - pytaj, choć po przeczytaniu manuala dla każdej z funkcji z biblioteki głównej użytej w tym skrypcie, wszystko powinno być jasne.
Musisz sobie to przerobić na funkcję, żeby spełnić warunki zadania.
  1. <pre>
  2. <?php
  3. $dane = "Nogawka jak wagon";
  4. //$dane = "kobyła ma mały bok";
  5.  
  6. // funkcja znajdująca spacje w zdaniu
  7. function find_spaces($string) {
  8. $tablica = Array();
  9. for ($i = 0, $max = strlen($string); $i<$max; $i++) {
  10. if ($string[$i] === ' ') {
  11. $tablica[] = $i;
  12. }
  13. }
  14. return $tablica;
  15. }
  16.  
  17. // funkcja wklejająca spacje w zdanie
  18. function place_spaces($string, $spaces) {
  19. $string = implode('',explode(' ', $string)); // scalanie stringa w jeden
  20.  
  21. $ret = ''; // przygotowanie zmiennej do wyniku
  22. $max = strlen($string);
  23. $j = 0;
  24. for ($i = 0; $i<$max; $i++){
  25. $ret .= $string[$i];
  26. if ($i == $spaces[$j]-($j+1)) { // jeżeli miejsce odpowiada spacji, to wklej spację i zwiększ licznik $j tablicy spacji
  27. $ret .= ' ';
  28. $j++;
  29. }
  30. // echo "$i : $ret <br /> \n"; // wyświetl poszczególne kroki
  31. }
  32. return $ret;
  33. }
  34.  
  35. echo $dane . '<br />';
  36. $spaces = find_spaces($dane);
  37. $dane = strrev($dane);
  38. /*
  39.   echo 'Spacje na miejscach:<br />';
  40.   print_r($spaces);
  41.  */
  42. echo $dane . '<br />';
  43. $dane = place_spaces($dane,$spaces);
  44. echo $dane . '<br />';
  45. $dane = strtolower($dane);
  46. echo $dane . '<br />';
  47. $dane = ucwords($dane);
  48. echo $dane . '<br />';
  49.  
  50. ?>
  51. </pre>
Go to the top of the page
+Quote Post
cisu
post
Post #10





Grupa: Zarejestrowani
Postów: 157
Pomógł: 1
Dołączył: 15.03.2008
Skąd: Mirostowice Dolne

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


Ja nie wiedziałem, że jest taka funkcja jak strrev, a dla siebie napisałem swoją, może komuś się przyda smile.gif

  1. function palindrom($str)
  2. {
  3. $str1 = strtolower($str);
  4. $dlugosc = strlen($str1);
  5.  
  6. if($dlugosc > 0) { // sprawdzamy, czy podany ciąg nie jest pusty
  7. for($i=0;$i<=$dlugosc;$i++)
  8. {
  9. $temp = $str1[$dlugosc - $i];
  10. $str2 .= $temp; // generujemy ciąg odwrotny do podanego
  11. }
  12. if($str1 == $str2) // porównujemy oba ciągi
  13. {
  14. return true; // jeśli są one identyczne, funkcja zwraca wartość true
  15. } else
  16. {
  17. return false; // a jeśli nie, wartość false
  18. }
  19. } else
  20. {
  21. return false; // jeśli podany ciąg jest pusty, również jest zwracana wartość false
  22. }
  23. }
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: 22.08.2025 - 11:19