Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP-haaste tehtävä 9

Sivun loppuun

pake10 [16.05.2010 14:41:01]

#

Eli olen jumissa PHP-haasteessa tehtävässä 9. Olen saanut Teuron ohjeilla (Olli oli näköjään myös tehnyt samanlaisen koodipätkän) tehtyä tämän koodipätkän:

<?php
$vokaalit = array("a", "e", "i", "o", "u", "y", "ä", "ö");
$sana = strtolower($_REQUEST['sana']);
$pituus = strlen($sana);
$laskuri = 0;

for($i = 0; $i < $pituus; $i++) {
$kirjain = $sana[$i];

if(in_array($kirjain, $vokaalit)) {
$laskuri += 1;
} else {
$laskuri = 0;
}

}

echo $laskuri;

?>

mutta koodi heittää vain nollaa. Tämän viestin olen myös katsonut, mutta en ymmärtänyt tuota (ongelmaa tuotti se, että mikä $suurin -muuttujan arvoksi pitäisi laittaa, ja se, että mitä silmukan lopussa olevan ehtolauseen pitäisi tehdä.). Olisiko mitään vinkkiä, miten tästä pitäisi edetä?

Metabolix [16.05.2010 14:46:13]

#

Sinulla on toimiva laskuri, kuten voit huomata tulostamalla jo for-silmukassa sen arvoja. Nyt pitäisi enää ottaa suurin arvo talteen – tämän ymmärtäminen lienee tehtävän idea, joten enempää vinkkiä ei minusta voi antaa.

Ota kynä ja paperia ja leiki tietokonetta. Miten $laskuri muuttuu silmukan edetessä (ja miksi)? Milloin se sisältää oikean vastauksen? Miten tuon vastauksen saisi talteen?

Edit: Macron viesti alla on päin honkia, koska hän ei ilmeisesti tiedä, mitä tehtävässä kuuluu tehdä. Tarkoitushan ei ole laskea vokaalien kokonaismäärää vaan pisin yhtenäinen jono. Toistan: nykyisen koodin laskuri on jo aivan oikein toteutettu.

Macro [16.05.2010 14:46:15]

#

Nolla tulee, koska asetat laskurin nollaksi kun kirjain ei ole nolla. Jätä else-kohta pois.

Muokkaus. Vai, oliko tehtävän ideana saada tietoon, että montako vokaalia oli enimmillään peräkkäin?

pake10 [16.05.2010 15:13:19]

#

Taidan alkaa tehdä tätä niin, että aina kun vokaalijono loppuu (suoritetaan else-lohko) laitetaan jono arrayhin. Sitten katsotaan erikseen, mikä arvo arraystä on pisin.

Antti Laaksonen [16.05.2010 15:35:47]

#

Tuo on yksi ratkaisu, mutta itse asiassa voit välttää taulukon käytön...

pake10 [16.05.2010 19:20:08]

#

Nyt sain ratkaistua, tein sittenkin sillä pätkällä, minkä laitoin aloitusviestiin. Ratkaisu olikin sitten aika yksinkertainen, kun hetken mietti.

Kiitos.

Teuro [16.05.2010 20:45:25]

#

Meinaatko Antti säännöllisiä lausekkeita? Mikäli tarkoitat, niin niillä tuo on melko helppo suoritus. Lähdekooditiedosto puristui 5 riviin sisältäen aloitus- ja lopetustagit.

Antti Laaksonen [16.05.2010 23:59:26]

#

Tarkoitin vain, että vokaalijonoista ei ole tarpeen tehdä uutta taulukkoa.

Jarska90 [04.06.2010 00:18:24]

#

Miten tämä tehtävä ratkaistaan?
En halua valmiita scriptejä, vaan joitan vinkkejä miten kannattaa aloittaa, yritin ylläolevaa koodia, mutta en keksinyt miten se toimisi, luin myös kommentteja.

Osaako joku auttaa?

Teuro [04.06.2010 06:43:25]

#

Se sinun olisi tarkoitus ratkaista itse. Tuossa on melkein toimiva koodinpätkä. Ainoa joka puuttuu on tosiaankin tuon pisimmän vokaalijonon pituus, jota tulee kuljettaa silmukan mukana.

Jarska90 [04.06.2010 15:25:52]

#

Miten vokaalijono pysäytetään? Tällä hetkellä koodini laskee kaikki vokaalit sanasta, tai sitten se ei laske ollenkaan.

trilog [04.06.2010 15:53:59]

#

Miten pidät kirjaa pisimmästä vokaalijonosta, ja millä tavalla saat selville, onko jokin toinen jono pidempi kuin tällä hetkellä pisin? Miten itse tekisit sen vaikka paperille?

Tässä ketjussa on niin paljon vihjeitä jo, ettei enempää ole mielekästä antaa. Pohdi ja lue tätä keskustelua läpi niin kauan kunnes keksit ratkaisun. Selvitä myös rivi riviltä, mitä aloitusviestissä oleva koodipätkä tekee, ja ennen kaikkea miksi niin tehdään.

Jarska90 [04.06.2010 16:00:08]

#

trilog kirjoitti:

Miten pidät kirjaa pisimmästä vokaalijonosta, ja millä tavalla saat selville, onko jokin toinen jono pidempi kuin tällä hetkellä pisin? Miten itse tekisit sen vaikka paperille?

Tässä ketjussa on niin paljon vihjeitä jo, ettei enempää ole mielekästä antaa. Pohdi ja lue tätä keskustelua läpi niin kauan kunnes keksit ratkaisun. Selvitä myös rivi riviltä, mitä aloitusviestissä oleva koodipätkä tekee, ja ennen kaikkea miksi niin tehdään.

Juu koetan tässä illalla selvittää tehtävä, kiitos vinkeistä.

Jarska90 [04.06.2010 17:22:18]

#

Metabolix kirjoitti:

Nyt pitäisi enää ottaa suurin arvo talteen – tämän ymmärtäminen lienee tehtävän idea, joten enempää vinkkiä ei minusta voi antaa.

Mitenkäs tämä talteen otto kannattaisi tehdä? Taulukkomuotoon ilmeisesti, mutta siitähän tuli aika pitkä scripti, jos sen tekisi for- lauseella.

vehkis91 [04.06.2010 18:42:09]

#

ihan yksinkertaista jos mietit hetken...


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta