ďťż
Podstrony
|
telcocafeWitamMam przykładowe dane w pliku: 1 Czesc, czy lubisz łowić ryby? 1-1 Tak 1-2 Nie 1-1-1 Ja też :) 1-2-2 Żałuj :D 1-1-1-1 Połowimy razem? 1-1-1-2 Masz może robaczki? 1-2-2-1 Nauczysz mnie? 1-2-2-2 Nie mam wędki Próbuje napisać algorytm w PHP który by zadawał kolejno pytania i możliwe odpowiedzi, jednak wogóle mi nie wychodzi :( Proszę o pomoc :) Drzewo binarne zaimplementowane na tablicy, przechodzone losowo? Tylko musisz mieć troszkę inną strukturę pliku wejścowego, albo go sobie obrobić. W skrócie chodzi o to, że w tablicy trzymasz drzewo, w którym każdy ojciec ma dokładnie dwoje potomków. Jeśli ojciec jest w tablicy na pozycji T[n], to lewy syn jest na T[2*n], a prawy na T[2*n+1]. Oczywiście trzeba pamiętać o tym, że tablica indeksuje się od zera, więc trzeba w paru miejscach dodać/odjąc jedynkę. t.txt k 0 1 00 01 10 11 000 001 010 011 100 101 110 111 index.php <?php $t = file_get_contents('t.txt'); $t = explode("\n",$t); $now = 1; while($now-1 < count($t)) // dopoki jestesmy w drzewie { echo $t[$now-1].'<br />'; // piszemy to, co teraz mamy pod reka $now = $now*2+rand(0,1); // i idziemy sobie losowo na lewo, albo na prawo } ?> Opisałem bardzo skrótowo, więc gdybyś czegoś nie rozumiał, to pytaj, tylko błagam o konkretne pytania ;] Użytkownik bryn edytował ten post 21 lipiec 2007, 14:56 Aleee mi chodzi o coś takiego, że: Zadawane jest pierwsze pytanie 1 Czesc, czy lubisz łowić ryby? I dwie możliwe odpowiedzi do niego: 1-1 Tak 1-2 Nie I teraz: Jeżeli się kliknie na Tak: to pokaże się 'odpowiedz': 1-1-1 Ja też smile.gif Zaś jeżeli kliknę na Nie pokaże się: 1-2-2 Żałuj :D itp CHODZI O ROZMOWĘ I KOLEJNO ZADAWANE PYTANIA W ZALEŻNOŚCI OD ODPOWIEDZI :P Użytkownik PiKey edytował ten post 21 lipiec 2007, 15:08 No to właściwie to samo... tyle, że: 1) w drzewie binarnym pamiętasz tylko pytania 2) wypisujesz klientowi pytanie, którego indeks w tablicy dostajesz w $_GET['q'] - jeśli nie ma tam nic, to wypisujesz pierwsze pytanie 3) dajesz klientowi dwa linki: echo '<a href="index.php?q='.$_GET['q']*2.'">etykieta lewej krawędzi</a>'; echo '<a href="index.php?q='.$_GET['q']*2+1.'">etykieta prawej krawędzi</a>'; W tym wypadku pytania są etykietami wierzchołków, a odpowiedzi - etykietami krawędzi <?php $od = 5; $do = 10; if( !$f = fopen('plik.txt', 'r')) exit('Nie można odczytać pliku!'); flock($f, 1); $cur=0; $all = array(); //Odczytujemy linijki while(++$cur && !feof($f) && $cur<$do) { if($cur>=$od) { $line = fgets($f); $pos = strpos($f, ' '); $all[ substr($line, 0, $pos) ] = substr($line, ++$pos); } } ksort($all); $index='1'; //Pierwszy indeks $chars=1; //Generujemy foreach($all as $key=>$val) { //Pytanie if($key==$index) { echo '<div class="q"><h3>'.$all[$i].'</h3>'; } //Odpowiedź elseif(...) { echo '<span onclick="Go(parametr)">'.$val.'</span>'; } } ?> Użytkownik Ferrari edytował ten post 22 lipiec 2007, 12:20 Może być! :) Bardzo proszę o 'dokładkę' :> Zaktualizowałem poprzedni post. Spróbujcie dokończyć skrypt. Nie chce mi się nad tym już myśleć. Trzeba jeszcze dopisać kod JS w <head>: var curID=1; function Go(x) { document.getElementById(curID).style.display='none'; document.getElementById(x).style.display='auto'; curID=x; }a także utworzyć odpowiednie style w zewnętrznym arkuszu CSS. Jeśli pojawi się odpowiedź np. "Ja też", to poniżej powinno być widoczne pytanie "Połowimy razem?"? |
|||
Sitedesign by AltusUmbrae. |