Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Apua tehtäviin

Krpr [10.07.2015 12:10:26]

#

Olen jäänyt totaalisen jumiin pariin itseopiskelutehtävään ja apu olisi nyt tarpeen.. Olen käyttänyt nyt jo muutaman päivän miettiessäni näitä kahta tehtävää ja kahlaamalla teoriaa läpi, mutta silti tehtävät eivät vain aukene minulle. Olisin kiitollinen jos joku voisi valaista minua missä menee väärin.

Tehtävä 1

Opiskelijat tiedostosta ohjelmointitehtävä 2/2
Tehtävänäsi on tehdä ohjelma, joka lukee merkkejä (char) ja merkkijonoja (string) tiedostosta opiskelijat.txt ja tulostaa tiedot näytölle. Näytölle tulostuksen tulee olla esimerkkitulostuksen mukainen.

Tiedostossa jokaisen opiskelijan tiedot ovat omalla rivillään. Jos tiedoston opiskelijat.txt avaaminen ei onnistu, tulee ohjelman tulostaa näytölle teksti "Tiedoston avaaminen ei onnistunut!". Heti tämän jälkeen ohjelman suorituksen on loputtava.

Jos esimerkiksi tiedoston (opiskelijat.txt) sisältö on seuraava:

Z Kakke Kahvinen
Y Yrjänä Yksinäinen

, tulostuvat tiedot näytölle seuraavasti:

Kalle Kahvinen: luokka Z
Yrjänä Yksinäinen: luokka Y

Esimerkkitulostus

Kalle Kekseliäs: luokka A
Kai K. Kuningas: luokka E
Maija Mallikas: luokka B
Mikko Mallikas: luokka A

Vastaukseni:

#include <iostream>
#include <fstream>
#include <stdlib.h>
using namespace std;

int main()
{
    ifstream tiedosto("opiskelijat.txt");

    if (!tiedosto.is_open()) {
        cout << "Tiedoston avaaminen ei onnistunut!" << endl;
        exit(0);
    }

    string nimi;
    string luokka;

    while(tiedosto>> nimi && tiedosto >>luokka) {
        cout << luokka << ": luokka " << nimi << endl;
    }

}

Tehtävä 2

Tehtävänäsi on tehdä ohjelma, joka lukee kokonaislukuja (int) tiedostosta ja tulostaa niiden summan näytölle. Näytölle tulostuksen tulee olla esimerkkitulostuksen mukainen.

Tiedostossa jokainen luku on omalla rivillään. Lukujen summa kirjoitetaan samaan tiedostoon viimeiseksi luvuksi. Tiedoston nimi on luvut.txt. Jos tiedoston luvut.txt avaaminen ei onnistu, tulee ohjelman tulostaa näytölle teksti "Tiedoston avaaminen ei onnistunut!". Heti tämän jälkeen ohjelman suorituksen on loputtava.

Jos esimerkiksi tiedoston (luvut.txt) sisältö on aluksi seuraava:

1
2

, on se ohjelman suorittamisen jälkeen seuraava:

1
2
3

Tiedostossa aikaisemmin olleiden lukujen summa kirjoitetaan siis saman tiedoston viimeiseksi luvuksi.
Esimerkkitulostus

Lukujen summa on 3

Vastaukseni:

#include <iostream>
#include <fstream>
#include <stdlib.h>
using namespace std;

int main()
{
    ifstream tiedosto("luvut.txt");

    if (!tiedosto.is_open()) {
        cout << "Tiedoston avaaminen ei onnistunut!" << endl;
        exit(0);
    }

    string nimi;
    string luokka;

   {
        cout << nimi << " Lukujen summa on 3 " << endl;
    }

}

Mod. lisäsi kooditagit!

jlaire [10.07.2015 16:51:18]

#

Tehtävä 1

Tiedostoesimerkissä on joka rivillä kolme sanaa ja luokka on niistä ensimmäinen. Luet vain kaksi sanaa ja väärässä järjestyksessä.

string luokka, etunimi, sukunumi;
while (tiedosto >> luokka >> etunimi >> sukunimi) {
    // tulostus tähän
}

Tehtävä 2

Ei kannata kopioida sokeasti ratkaisuja. Et tarvitse string-muuttujia ja koodista puuttuu tiedoston lukeminen kokonaan.

Lue silmukassa lukuja int-muuttujaan ja laske niiden summa.

int summa = 0, luku;
while (cin >> luku) {
    // koodia tähän
}

Vastaus

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

Tietoa sivustosta