Bruce666 utworzono 14 grudnia 2018 utworzono 14 grudnia 2018 Witam, Mam do zrobienia pewien projekt i jedna rzecz mnie w nim blokuje. Problem wygląda następująco: Są dwie tablice znaków: Pierwsza - tekst wprowadzony przez użytkownika i przy użyciu str_split przekształcony w tablicę Druga - alfabet złożony z małych i dużych liter przekształcony w tablicę przy użyciu str_split. Fragment kodu wygląda następująco: $tekst = $_POST['Caesar']; var_dump($tekst); $znaki = str_split($tekst); var_dump($znaki); $alfabet = ('AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuWwVvXxYyZz'); $alfarray = str_split($alfabet); Problem polega na tym, żeby znaleźć indeksy znaków w tablicy alfabet, przykładowo: $tekst = 'Jan Kowalski' zmienione na tablicę będzie wyglądać tak: [0] 'J' ; [1] 'a'; [2] 'n'; [3] ' '; [4] 'K'; itd... Chodzi o to, by skrypt wykrył, że duża litera 'J' ma w tablicy $alfarray indeks bodajże 18, 'a' ma indeks '1' (pierwszy znak ma indeks 0), itd. Próbowałem rozwiązać to przez dwie pętle for i w nich while, ale nie umiem ustawić warunku, który by to weryfikował. Cały program to szyfr cezara, a powyższy problem jest barierą, która nie pozwala mi go rozwiązać... Pomoże ktoś?
dmonix komentarz 14 grudnia 2018 komentarz 14 grudnia 2018 (edytowane) rozsądne wydaje się zrobienie tablicy asocjacyjnej czyli $alfArray = [ 'A' => 0, 'a' => 1, itd itd ]; a później $szyfr = []; foreach ($tekst as $t) { $szyfr[] = $alfArray[$t]; } tylko wiem pisania z palca tej pierwszej tablicy. albo drugi sposób to robisz foreacha po tej tablicy która ma być zaszyfrowana i dla każdej wartości piszesz funkcje która sprawdza pozycję danej literki function getIndex($char, $array) { foreach ($array as $index => $value) { if ($value == $char) { return $index; } } return -1; //brak znaku w tablicy } $szyfr = []; foreach ($text as $t) { $szyfr[] = getIndex($t, $alfArray); } wszystko pisałem z głowy więc może gdzieś być błąd, podałem pomysły jak możesz to zrobić. Edytowane 14 grudnia 2018 przez dmonix
Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!
Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.