Dobrodošli, goste ( Prijava | Registracija )

 
Reply to this topicStart new topic

Pomoć oko par zadataka PHP

V
mikrominis
poruka Sep 27 2016, 20:53
Poruka #1




Grupa: Članovi 1
Poruke: 3
Datum reg.: 27-September 16
Član broj: 55,551



Zadatke bi trebalo riješiti bez korištenja bilo kakvih gotovih PHP funkcija. Treba mi za školu, i stalno sam na nekon tragu rješenja ali nikako dobiti točno mad.gif

1. Napiši funkciju koja kao parametar prima string, te kao rezultat vraća true ako je zadani string
palindrom. U suprotnom vraća false. (palindrom: anavolimilovana)

2. Napiši funkciju koja kao parameter prima neki niz, a kao rezultat vraća element koji se najviše
puta ponavlja unutar tog niza.

3. Napiši funkciju koja kao parameter prima neki niz cijelih brojeva, a kao rezultat vraća
najmanji broj unutar tog niza.

mellow.gif
Go to the top of the page
 
+Quote Post
unread
poruka Sep 27 2016, 21:19
Poruka #2




Grupa: Članovi
Poruke: 2,072
Datum reg.: 9-March 11
Lokacija: Nbgd
Član broj: 42,568



i zamisli sad neko dodje i napise ti komplet sve ?!
Go to the top of the page
 
+Quote Post
mikrominis
poruka Sep 28 2016, 13:22
Poruka #3




Grupa: Članovi 1
Poruke: 3
Datum reg.: 27-September 16
Član broj: 55,551



Zamisli samo. To bi bila tragedija. Netko tko zna da pomogne onome koji ne zna. Bas grozno sto sam to i pomislila. dry.gif
Go to the top of the page
 
+Quote Post
kobayashi
poruka Sep 28 2016, 21:17
Poruka #4




Grupa: Članovi
Poruke: 3,898
Datum reg.: 18-September 06
Lokacija: 43°53'30"N 20°21'00"E
Član broj: 6,377



Evo pošto sam raspoložen za pisanije, nemojte zameriti ako negde i pogrešim logički pošto sam umoran (drugačije je kad bih kucao kod, ovako pišem napamet iz glave)...
Ne radim PHP, bar ne svaki dan, mnogo bolje poznajem JS, ali ni u tom slučaju ti ne bih ovde pisao kod, već samo ideje, a ti se potrudi pa nađi sintaksu na net-u (imaš na w3schools za JS i na zvaničnom sajtu php-a za php, mada za ovo što ti treba isto je dovoljan w3schools i za php), jer se tako najbolje uči sintaksa, umesto da ti neko napiše gotova rešenja.
Ne bi verovao da i napredni programeri često potežu dokumentaciju kad im je potrebno nešto što vrlo retko koriste.


1. zadatak
Bilo bi najlakše koristiti "strrev()", ali pošto kao ne može ugrađena funkcija...

Pošto palindromi najčešće ne uzimaju u obzir razmake, moraš to da imaš u vidu (to je glavna logička začkoljica, ostalo je prosto), ali pretpostavljam da ne smeš koristiti ni ugrađenu funkciju za uklanjanje razmaka između reči u stringu.

Definišeš funkciju (pogledaj na php.net kako se definiše funkcija sa jednim parametrom) sa odgovarajućim parametrom, npr. "function fPalindrom(parametar){}" - kod php-a, isto kao kod JS-a, nije potrebno navoditi tip podatka (loosely typed language).

Sada bi bilo nezgodno koristiti duplu petlju u kojoj ćeš nekom novom nizu dodeliti elemente polaznog niza (stringa) obrnutim redosledom - možeš koristiti strlen, ali ako baš i to ne smeš, moraš prvo napraviti petlju koja inkrementira vrednost nove promenljive za dužinu strniga sve dok karakter parametar[i] ne bude jednak praznom stringu, tj. ''), jer ćeš imati problem sa razmacima između reči, koji se kod palindroma ignorišu.

Kako ne možeš koristiti ugrađenu php funkciju da prvo "očistiš" string od razmaka, postoji bolji način.

Ako je broj znakova u stringu paran (uključujući razmake), porediš prvi i poslednji znak, pa drugi i pretposlednji, ali svaki put proveriš da li je jedan od njih razmak, ako jeste za tu promenljivu preskočiš jedan indeks i ponoviš poređenje. Ako je broj znakova neparan, onda ideš do celobrojnog dela polovine dužine stringa unapred od početka i unazad od kraja.

Algoritam je prost, mada ima i drugih načina, ali ne bih da pišem celu stranu teksta ako ne razumeš osnovne stvari iz programiranja (ne pisanja koda, već programiranja).



2. zadatak
Ideja je da napraviš novi niz sa istim brojem elemenata kao prvi, koji svi imaju vrednost 1.
Zatim u prvom nizu porediš svaki element sa svakim, ali ako 1. uporediš sa ostalima, onda 2. porediš sa 3. i onima iza, jer je sa 1. već upoređen.
Svaki put kad naiđeš na novi element koji je jednak prvom, u drugom nizu na 1. mestu inkrementiraš broj (kada 2. element porediš sa 3. i ostalima iza, u slučaju jednakosti inkrementiraš 2. element u drugom nizu).
Kad prođeš sva poređenja, proveriš u drugom nizu koji element ima najveću vrednosti (to ti je treći zadatak). Pozicija tog elementa je ista kao pozicija elementa u prvom nizu kome je jednako najviše drugih elemenata (tj. ima najviše ponavljanja), pa njega vratiš kao traženu vrednost - npr. ako su nizovi a[i] i b[i], ako nađeš da je najveći broj b[4], tada je vrednost a[4] sa najviše ponavljanja.
Ako su u drugom nizu svi elementi jednaki, algoritam dat u 3. zadatku će ti vratiti vrednost prvog elementa, ali to nije korektno rešenje.
Zato je potrebno proveriti i kolika je vrednost najvećeg broja u drugom nizu, i ako je to 1, onda su u prvom nizu svi elementi jedinstveni.



3. zadatak
Ovo je boza u bilo kom programskom jeziku. Uzmeš da je 1. element najmanji/najveći (jer je interesantniji primer gde se traži i najmanji i najveći element), recimo Amin i Amax i oba su jednaka 1. elementu.
Zatim ih uporediš sa 2. članom niza, pa ako Amin manji - ništa, ako nije, onda je Amin = niz[1]; slično i za Amax, ako je veći od 2., ništa, a ako nije, onda je Amax=niz[1]. I tako do kraja...




Eto, nije dovoljno poznavati sintaksu nekog jezika, stalno to govorim ljudima, ali oni se stalno brinu što ne znaju ovaj ili onaj programski jezik, a kad nauče jezik, ne umeju da reše najprostiji problem koristeći taj jezik.

To je kao da si naučio ceo rečnik nekog stranog jezika i gramatiku, ali to nije dovoljno da možeš pistai pesme ili romane.
Go to the top of the page
 
+Quote Post
mikrominis
poruka Sep 28 2016, 22:30
Poruka #5




Grupa: Članovi 1
Poruke: 3
Datum reg.: 27-September 16
Član broj: 55,551



Hvala ti puno.. covjek uci dok je ziv, imam volje za ucenje ali nije lako kad negdje zapnes i nema od koga traziti pomoc rolleyes.gif
Go to the top of the page
 
+Quote Post
h8er
poruka Sep 30 2016, 02:50
Poruka #6




Grupa: Članovi 1
Poruke: 5
Datum reg.: 20-November 08
Član broj: 25,398



Vau, rekoh, daj da probam... Nisam ni znao da toliko zavisim od gotovih funkcija.
Ako nisi resio zadatke, neka moja resenja, al' bolje se pomuci sam (SPOILERS AHEAD):

1.
CODE
function palindrom($string) {
$compare = '';
$i = 0;
while(1) {
if(!isset($string[$i])) break;
$compare = $string[$i] . $compare;
$i++;
}
if($compare == $string) {
return true;
}
return false;
}



2. Mozda moze i sa manje koda:

CODE

function counter($array) {
$arrayHolder = array();

foreach($array as $element) {
if(!isset($arrayHolder[$element])) {
$arrayHolder[$element] = 1;
continue;
}
$arrayHolder[$element]++;
}

$holdCount = 0;
$holdLetter = '';
foreach($arrayHolder as $letter=>$count) {
if($count > $holdCount) {
$holdCount = $count;
$holdLetter = $letter;
}
}
return $holdLetter . ': ' .$holdCount;
}


3. To mozes sam
Go to the top of the page
 
+Quote Post
kobayashi
poruka Oct 1 2016, 17:45
Poruka #7




Grupa: Članovi
Poruke: 3,898
Datum reg.: 18-September 06
Lokacija: 43°53'30"N 20°21'00"E
Član broj: 6,377



Koliko videh, ovo rešenje 1. zadatka ne uzima u obzir razmake između reči, koje se kod palindroma ignorišu (ana voli milovana = anavolim ilov ana), što malo komplikuje stvar.
Čak i da se razmaci ignorišu pri kreiranju promenljive $compare, ne može se na kraju njena vrednost porediti sa početnim stringom.

Ali, ovo je validno ako se ovoj funkciji prosledi string bez razmaka između reči, što pre pozivanja ove funkcije može da odradi druga funkcija (jer, teorijski u opštijem slučaju to može zatrebati i negde drugde u programu, pa je pogodnije uraditi tako).
Go to the top of the page
 
+Quote Post
h8er
poruka Oct 4 2016, 11:37
Poruka #8




Grupa: Članovi 1
Poruke: 5
Datum reg.: 20-November 08
Član broj: 25,398



CITAT (kobayashi @ Oct 1 2016, 18:45) *
Koliko videh, ovo rešenje 1. zadatka ne uzima u obzir razmake između reči, koje se kod palindroma ignorišu (ana voli milovana = anavolim ilov ana), što malo komplikuje stvar.
Čak i da se razmaci ignorišu pri kreiranju promenljive $compare, ne može se na kraju njena vrednost porediti sa početnim stringom.

Ali, ovo je validno ako se ovoj funkciji prosledi string bez razmaka između reči, što pre pozivanja ove funkcije može da odradi druga funkcija (jer, teorijski u opštijem slučaju to može zatrebati i negde drugde u programu, pa je pogodnije uraditi tako).


Tačno, ja radio samo po njegovom primeru "anavolimilovana"...
Inace, princip je isti, samo se ignorišu razmaci. A ne poredi se sa početnim stringom, nego se kreira novi gde se takodje ignorišu razmaci, a složi se bez obrtanja.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic

 



Lo-fi verzija Trenutno vreme: Sunday 8. December 2019 - 02:05

Sve informacije (poruke, teme i sl.) predstavljaju stavove samo njihovih autora.
Objavljivanje informacija sa sajta u nekomercijalne svrhe moguće je samo uz navođenje URL adrese diskusije.
Za sve druge vidove distribucije potrebno je imati izričitu dozvolu administratora Dizajn Zone i/ili autora poruka.
Autorska prava za sadržaj poruke zadržava njihov autor, osim ako nije drugačije naznačeno.

powered by:Plus hosting