Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Tekstitiedoston lukua ja järjestelyä

Osaamaton [04.05.2017 22:19:13]

#

Kuinka tehdä ohjelma joku lukee tiedostosta sanan "oli" edeltävät ja jälkimmäiset sanat aakkosittain
Esim.
Oli sanan edeltävät sanat:
Autio
Brasilia
Chili
Oli sanan jälkimmäiset sanat:
Anne
Hotelli
Rakkaus

Quirzo [04.05.2017 22:28:18]

#

En halua olla ilonpilaaja mutta onko tämä joku koulutehtävä? Onko sulla itsellä ideaa miten lähtisit tekemään?

Jos C++ puhutaan, avainsanoja voisivat omasta mielestäni olla olla std::ifstream ja std::vector.

Edit: Oli se näköjään C++

Osaamaton [04.05.2017 22:34:45]

#

Osaan sen lukemisen ifstreamilla. Loput onkin hepreaa. Voisi oppia mallin kautta

Teuro [06.05.2017 09:09:57]

#

Eli saat luettua tiedostosta kasan merkkejä tietokoneen muistiin. Seuraavaksi sinun tulee purkaa joko lukemisen aikana tai sen jälkeen merkkijonot sopivaan tietorakenteeseen. std::set olisi varmaan rakenteellisesti parhain, mutta std::vector tai std::list sopinee myös mainiosti.

Lukemisen ja datan muokkaamisen jälkeen pitäisi järjestää lista aakkosjärjestykseen. Aakkostamisen jälkeen tulosta merkkijonoja kunnes tulee sana "oli". Lopuksi tulosta loput merkkijonot.

Kurssimateriaalista löytyy varmasti tarvittavat ohjeet tehtävän täsmälliseen suorittamiseen.

Metabolix [06.05.2017 10:00:57]

#

Teuro kirjoitti:

Aakkostamisen jälkeen tulosta merkkijonoja kunnes tulee sana "oli".

Itse käsitin, että ensin pitäisi etsiä "oli" ja sitten aakkostaa erikseen sitä edeltävät ja sitä seuraavat sanat. Tehtävän muotoilu on kyllä hyvin epämääräinen, ilmaus ”sanan "oli" edeltävät ja jälkimmäiset sanat” ei ole oikein suomea.

Mutta tosiaan, kyllä kurssimateriaaleissa lähes poikkeuksetta kerrotaan kaikki, mitä tehtävän ratkaisemiseen tarvitaan.

Eli lyhyesti: lue sana, lisää listaan, etsi "oli", järjestä listan osat, tulosta lista. Toinen vaihtoehto on tehdä kaksi listaa ja lukea ensimmäiseen sanat "oli"-sanaan asti ja toiseen loput, jolloin ei tarvitse jälkikäteen etsiä "oli"-sanaa listasta.

Koeta nyt edes tehdä jonkinlainen versio itse, ja kysy sitten, jos jossain tietyssä kohdassa on ongelmia.

Teuro [06.05.2017 12:33:57]

#

Olet varmasti oikeassa lukaisin tehtävän hiukan puolivaloilla. Tietorakenteeksi sopinee tässä tapauksessa std::vector varsin mainiosti, koska siihen on helppo lisätä sanoja ja vectoria voidaan lajitella kohtalaisen mielivaltaisilla väleillä.

Voisitko laittaa tähän mennessä ohjelmoimasi version, niin saadaan parempi kuva missä vaiheessa ohjelman kehittely on menossa.

Vastaus

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

Tietoa sivustosta