Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

3 Stron V   1 2 3 >  
Reply to this topicStart new topic
> [PHP]Rozmowa Kwalifikacyjna - programista, Sorki za spam
Robert1985
post 27.08.2009, 15:19:55
Post #1





Grupa: Zarejestrowani
Postów: 84
Pomógł: 7
Dołączył: 5.08.2009
Skąd: Tychy

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


Dla zainteresowanych podaję pytania jakie miałem na rozmowie kwalifikacyjnej , do rozwiązania w dowolnym języku ,można było w PHP.
1.Napisać prosty kalkulator umożliwiający: dodawanie ,odejmowanie, mnożenie, dzielenie.
W przypadku dzielenia przez zero program ma generować błąd.
2.Napisać funkcję ,która zamieni podaną przez użytkownika zmienną typu String na Integer. Wykorzystać ją w programie i zaprezentować wyniki.
3.Napisać program ,który zamnieni w podanym ciągu Duże litery na małe i na odwrót.

Czas około 30 minut.
Jeżeli będzie zainteresowanie udostępnię rozwiązania. Choć zadania nie są trudne. Ale w końcu to przedszkole.
Powód edycji: [erix] przeniosłem


--------------------
"Istnieją dwa sposoby projektowania oprogramowania. Można napisać je tak prosto, że w oczywisty sposób nie będzie w nim niedoskonałości; można też uczynić je tak skomplikowanym ,że nie będzie w nim żadnych oczywistych niedociągnięć.Pierwsza metoda jest znacznie trudniejsza." C.A.R Hoare
Go to the top of the page
+Quote Post
alegorn
post 27.08.2009, 15:38:19
Post #2





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

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


chyba tylko 3 jest jakims ciekawszym zadaniem :] jesli dobrze zrozumialem miales za zadanie z CaMela zrobic cAmElA ?

ha, moze maly konkurs w ilu krokach kto sie zmiesci? biggrin.gif
Go to the top of the page
+Quote Post
Robert1985
post 27.08.2009, 15:43:10
Post #3





Grupa: Zarejestrowani
Postów: 84
Pomógł: 7
Dołączył: 5.08.2009
Skąd: Tychy

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


Dokładnie tylko trzecie wymagało jakiegoś większego zastanowienia ja użyłem wyrażeń regularnych ,ale może ktoś zrobił to inaczej zamieszczam moje rozwiązanie:
  1. <?php
  2. $ciag = $_POST['ciag']; //ciąg z textboxa
  3. $ok = $_POST['ok']; //wartość przeslana przez submita
  4.  
  5. if (isset($ok))
  6. {
  7. //badanie długości
  8. $dlugosc = strlen($ciag);
  9. echo "Zmieniony przez Ciebie ciąg to: ";
  10. for ($i=0;$i<=$dlugosc-1;++$i)
  11. {
  12. $znak = substr($ciag,$i,1);
  13.  
  14.  
  15. if (ereg('[A-Z]',$znak))
  16. $znak[$i] = strtolower($znak);
  17.  
  18. elseif (ereg('[a-z]',$znak))
  19. $znak = strtoupper($znak);
  20.  
  21. echo "$znak";
  22. }
  23. }
  24. ?>


--------------------
"Istnieją dwa sposoby projektowania oprogramowania. Można napisać je tak prosto, że w oczywisty sposób nie będzie w nim niedoskonałości; można też uczynić je tak skomplikowanym ,że nie będzie w nim żadnych oczywistych niedociągnięć.Pierwsza metoda jest znacznie trudniejsza." C.A.R Hoare
Go to the top of the page
+Quote Post
Fifi209
post 27.08.2009, 15:43:25
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(alegorn @ 27.08.2009, 15:38:19 ) *
chyba tylko 3 jest jakims ciekawszym zadaniem :] jesli dobrze zrozumialem miales za zadanie z CaMela zrobic cAmElA ?

ha, moze maly konkurs w ilu krokach kto sie zmiesci? biggrin.gif


W jednym... str_replace...

Chyba, że chodzi o coś takiego:

MAŁE -> małe
duże -> DUŻE

strtoupper & strtolower

Ten post edytował fifi209 27.08.2009, 15:53:11


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
Robert1985
post 27.08.2009, 15:46:59
Post #5





Grupa: Zarejestrowani
Postów: 84
Pomógł: 7
Dołączył: 5.08.2009
Skąd: Tychy

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


Niby dlaczego ,a jak sprawdzisz str_replace czy zczytany znak jest dużą literą czy małąquestionmark.gif Zakresy są tylko w wyrażeniach chyba nie?? Nie jestem bardzo zaawansowany w PHP więc mogę się mylic. Pewnie da się inaczej zamieść swoje rozwiązanie ,to może się czegos nauczymy,a nie krytykuj tylko.

Ten post edytował Robert1985 27.08.2009, 15:50:27


--------------------
"Istnieją dwa sposoby projektowania oprogramowania. Można napisać je tak prosto, że w oczywisty sposób nie będzie w nim niedoskonałości; można też uczynić je tak skomplikowanym ,że nie będzie w nim żadnych oczywistych niedociągnięć.Pierwsza metoda jest znacznie trudniejsza." C.A.R Hoare
Go to the top of the page
+Quote Post
alegorn
post 27.08.2009, 15:53:38
Post #6





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

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


  1. $inp = "CaMeL tO WieLeRRoR";
  2. $low = strtolower($inp);
  3. $rew='';
  4. for($c = 0; $c<strlen($inp); ++$c ){
  5. if($inp{$c} === $low{$c}){
  6. $rew .= strtoupper($low{$c});
  7. }
  8. else{
  9. $rew .=$low{$c};
  10. }
  11. }
  12. var_dump($inp,$rew);


edit:: moze jeszcze zwrot dokleje:)
  1. string 'CaMeL tO WieLeRRoR' (length=18)
  2. string 'cAmEl To wIElErrOr' (length=18)


to tak na szybko - mysle ze moglbym jeszcze co nieco zmienic, ale to juz kosztem czytelnosci

Ten post edytował alegorn 27.08.2009, 15:58:31
Go to the top of the page
+Quote Post
Fifi209
post 27.08.2009, 16:00:11
Post #7





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Co do str_replace - mój błąd winksmiley.jpg

Ale zamiast wyrażeń można tak:
  1. $test = 'tO jEST pRZYKLADOWY tEKST';
  2.  
  3. for ($i=0; $i < strlen($test); $i++) {
  4. $x[] = $test[$i];
  5. }
  6.  
  7. foreach ($x as $l) {
  8. if (ord($l) > 64 && ord($l) < 91) {
  9. echo chr(ord($l)+32);
  10. }else if (ord($l) > 96 && ord($l) < 123) {
  11. echo chr(ord($l)-32);
  12. }else{
  13. echo $l;
  14. }
  15. }

Na pewno za pomysłowość dostałbyś plusa. ;d


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
Spawnm
post 27.08.2009, 16:05:38
Post #8





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




Cytat(fifi209 @ 27.08.2009, 16:43:25 ) *
W jednym... str_replace...

Chyba, że chodzi o coś takiego:

MAŁE -> małe
duże -> DUŻE

strtoupper & strtolower


Nadal wystarczy 1 str_replace i tablece z ABCabc , abcABC...
Ale kombinujecie tongue.gif
Go to the top of the page
+Quote Post
Skie
post 27.08.2009, 16:07:48
Post #9





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

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


1 i 3 to banał, ale niezbyt rozumiem zbytnio o co chodziło w 2.

Jak ten wprowadzany string miał wyglądać?
1. "1414"
2. "av1vs3"
3. "124asfa"

Czy jak?
Bo jeżeli 1 opcja to wystarczy intval(), a jeżeli 2 lub 3 to wcześniej wyciąć znaki nie-numeryczne i dopiero potem intval()

O to chodziło?


--------------------
Wieloprocesowość i wielowątkowość w PHP, poznaj Kraken PHP!
Serwer HTTP i WebSocket w PHP | Promise/A+
Strona Domowa | Elradia MMORPG
FireFox: make the web better.
Go to the top of the page
+Quote Post
Fifi209
post 27.08.2009, 16:08:02
Post #10





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(Spawnm @ 27.08.2009, 16:05:38 ) *
Nadal wystarczy 1 str_replace i tablece z ABCabc , abcABC...
Ale kombinujecie tongue.gif

Powiem Ci, że pisząc posta właśnie tak myślałem... Dlatego napisałem o tej funkcji lecz jak zabrałem się za testowanie - z ciekawości - to zamieniało ale tylko na duże. ;d
(oczywiście alfabety były odwrócone)

Spróbuj tak:
  1. <?php
  2.  
  3. $test = 'tO jEST pRZYKLADOWY tEKST';
  4.  
  5. $male = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
  6. $duze = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
  7.  
  8. echo str_replace(array_merge($male, $duze), array_merge($duze, $male), $test);
  9.  
  10. ?>

I będzie źle...

Ten post edytował fifi209 27.08.2009, 16:18:15


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
seth-kk
post 27.08.2009, 16:16:12
Post #11





Grupa: Zarejestrowani
Postów: 444
Pomógł: 79
Dołączył: 26.05.2009

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


  1. $test = 'MaLe tO DuZeE';
  2.  
  3. $a = 'qazwsxedcrfvtgbyhnujmikolp';
  4. $b = strtoupper($a);
  5.  
  6. echo strtr($test, $a.$b, $b.$a); //mAlE To dUzEe

ktow wrzocic powyzsze w petle i sprawdzi wydajnosc? <.<


--------------------
Go to the top of the page
+Quote Post
alegorn
post 27.08.2009, 16:16:59
Post #12





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

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


cos w ten desen..?

  1. $txt = "AbC";
  2. $serch = array('a','b','c','A','B','C');
  3. $replace= array('A','B','C','a','b','c');
  4. $rep = str_replace($serch,$replace,$txt);
  5.  
  6. var_dump($txt,$rep);


o ile dobrze mysle kolejnosc elementow w tablicy ma znaczenie.
wiec b zostanie wpierw zmienione na duze, next na male....

oczywiscie o ile dobrze mysle :]
Go to the top of the page
+Quote Post
Fifi209
post 27.08.2009, 16:20:27
Post #13





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(alegorn @ 27.08.2009, 16:16:59 ) *
cos w ten desen..?

  1. $txt = "AbC";
  2. $serch = array('a','b','c','A','B','C');
  3. $replace= array('A','B','C','a','b','c');
  4. $rep = str_replace($serch,$replace,$txt);
  5.  
  6. var_dump($txt,$rep);


o ile dobrze mysle kolejnosc elementow w tablicy ma znaczenie.
wiec b zostanie wpierw zmienione na duze, next na male....

oczywiscie o ile dobrze mysle :]


Dobrze myślisz, ale ja również podałem taki przykład troszkę wyżej dla Spawna winksmiley.jpg zobacz sobie... ;d

@topic
A co z tym zmienianiem string na int?


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
Robert1985
post 27.08.2009, 16:36:27
Post #14





Grupa: Zarejestrowani
Postów: 84
Pomógł: 7
Dołączył: 5.08.2009
Skąd: Tychy

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


Nie pamiętam jak to wyglądało , ja nie brałem pod uwagę ciągów '123cośtam' ale to mój błąd zaprezentuje ktoś rozwiązanie z tym trudniejszym przykładem.


--------------------
"Istnieją dwa sposoby projektowania oprogramowania. Można napisać je tak prosto, że w oczywisty sposób nie będzie w nim niedoskonałości; można też uczynić je tak skomplikowanym ,że nie będzie w nim żadnych oczywistych niedociągnięć.Pierwsza metoda jest znacznie trudniejsza." C.A.R Hoare
Go to the top of the page
+Quote Post
Spawnm
post 27.08.2009, 16:38:33
Post #15





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




Przecież pisałem wystarczy 1 str_replace i tablice z ABCabc , abcABC...
Go to the top of the page
+Quote Post
alegorn
post 27.08.2009, 16:47:32
Post #16





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

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


Cytat(Spawnm @ 27.08.2009, 17:38:33 ) *
Przecież pisałem wystarczy 1 str_replace i tablice z ABCabc , abcABC...


hmmm ale str_replace nie zadziala prawidlowo.... a przynajmniej nie tym sposobem jakim ja napisalem..... dry.gif
Go to the top of the page
+Quote Post
Fifi209
post 27.08.2009, 16:56:40
Post #17





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(Spawnm @ 27.08.2009, 16:38:33 ) *
Przecież pisałem wystarczy 1 str_replace i tablice z ABCabc , abcABC...


Jeżeli jesteś pewien...
  1. $test = 'tO jEST pRZYKLADOWY tEKST';
  2.  
  3. $male = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
  4.  
  5. $duze = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
  6.  
  7. echo str_replace(array_merge($male, $duze), array_merge($duze, $male), $test);

Jak wspominałem nie działa.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
alegorn
post 27.08.2009, 17:03:38
Post #18





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

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


a co mi tam.
kazde z rozwiazan dalem do petli * 100 - sprawdzalem kilkukrotnie, kolejnosc wynikow bez zmian


Robert1985 :: 0.0393550395966 // tyle ze o ile dobrze sprawdzilem, cos nie teges zwrot ci wyszedl
ja:: 0.0205841064453
fifi209:: 0.663460016251
seth-kk:: 0.000790119171143 party.gif

sumujac - seth-kk pobil nas o 3 miejsca po przecinku....
no coz, nic dziwnego, skoro rozwiazal zadanie bez petli (hmmmm dyskwalifikacja?questionmark.gif tongue.gif )

chociaz warto by bylo jeszcze obciazenie pamieci sprawdzic, ale to juz jutro, na dzis spadam do domu.
Go to the top of the page
+Quote Post
Fifi209
post 27.08.2009, 17:24:32
Post #19





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(alegorn @ 27.08.2009, 17:03:38 ) *
a co mi tam.
kazde z rozwiazan dalem do petli * 100 - sprawdzalem kilkukrotnie, kolejnosc wynikow bez zmian


Robert1985 :: 0.0393550395966 // tyle ze o ile dobrze sprawdzilem, cos nie teges zwrot ci wyszedl
ja:: 0.0205841064453
fifi209:: 0.663460016251
seth-kk:: 0.000790119171143 party.gif

sumujac - seth-kk pobil nas o 3 miejsca po przecinku....
no coz, nic dziwnego, skoro rozwiazal zadanie bez petli (hmmmm dyskwalifikacja?questionmark.gif tongue.gif )

chociaz warto by bylo jeszcze obciazenie pamieci sprawdzic, ale to juz jutro, na dzis spadam do domu.

Hmm, bardzo ciekawe. winksmiley.jpg
Czym mierzyłeś czasy? snitch.gif

Jak możesz spróbuj jeszcze z tym:
  1. $test = 'tO jEST pRZYKLADOWY tEKST';
  2. $x = strlen($test);
  3. $y=0;
  4.  
  5. while ($y < $x) {
  6. $cache = ord($test[$y]);
  7. if ($cache > 64 && $cache < 91) {
  8. echo chr($cache+32);
  9. }else if($cache > 96 && $cache < 123) {
  10. echo chr($cache-32);
  11. }else{
  12. echo $test[$y];
  13. }
  14. $y++;
  15. }

Interesuje mnie różnica między tym czasem a poprzednim (z pętlą for).


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
ultra_18
post 27.08.2009, 17:37:20
Post #20





Grupa: Zarejestrowani
Postów: 71
Pomógł: 4
Dołączył: 30.10.2008

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


  1. for($i=0;$i<strlen($text);$i++)
  2. $text[$i] = ($text[$i] == strtoupper($text[$i])) ? strtolower($text[$i]) : strtoupper($text[$i]) ;
Go to the top of the page
+Quote Post

3 Stron V   1 2 3 >
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 Wersja Lo-Fi Aktualny czas: 25.07.2025 - 09:44