Cpp tehtäviä vaikeat

Mureakuha

Loikkaa: valikkoon, hakuun

Sisällysluettelo

Ohjelma 1 - Yleinen osio

Tässä ohjelmassa pitäisi verrata kappaleen pysähtymistä annetusta nopeudesta putoamiseen tietyltä korkeudelta mutta siinä on vikoja.

#include <istream.h>
 
void main()
{
 
    float v;
    cout << "Kappaleen liikkuessa se kerää liike-energiaa joka ";
    cout << "äkkipysähdyksessä kohdistuu siihen itseensä.";
    cout << "Anna liikkumisnopeus km/h: ";
    cin >> v;
    cout << "Nopeus vastaa pudotusta " << .5v*v / (9.81*3.6) << " metristä.\n\n";
 
}

Ohjelma 2 - Yleinen osio

Ohjelma tulostaa ruudulle ajan joka valolta kuluu matkalla Auringosta kyseiselle planeetalle. Siinä kuitenkin on puutteita, tehtäväsi on korjata ne.

#include <iostream.h>
 
void main()
{
 
    const float c;
    c = 2.99792458E8;
    cout << "\nValolla kestää matka Auringosta";
    cout << "\nMerkuriukseen: " << 57.9e9/c << " s";
    cout << "\nMaahan: " << 149.6E9/c << " s";
    cout << "\nMarsiin: " << 227.9E9/c << " s";
    cout << "\nSaturnukseen: " << 1425.6F9/c << " s";
    cout << "\nPlutoon: " << 5885E9c << " s";
    cout << "\n\n";
 
}

Ohjelma 3 - Yleinen osio

Tämä ohjelma laskee kappaleen putoamisajan annetulta korkeudelta mutta se ei läpäise kääntämistä. Selvitä viat ja korjaa.

#include <iostream.h>
#include <math.h>
 
void main();
{
 
    int korkeus;
    cout << "\nJos kappale päästetään vapaaseen putoamisliikkeeseen
    lentokoneesta, se kiihtyy maan vetovoiman vaikutuksesta.";
    cout << "\nAnna lentokoneen lentokorkeus metreissä: ";
    cin >> Korkeus;
    cout << "\nPutous kestää: " << sqrt (2 * korkeus / 9,81) << " s.\n\n";
 
}

Ohjelma 4 - Yleinen osio

Tässä ohjelmassa pitäisi laskea sähkölaitteen käytön hinta kun käyttäjä syöttää tarpeelliset tiedot mutta ohjelmoija on tehnyt muutamia virheitä eikä ohjelma toimi. Oikaise häntä.

#include <iostream.h>
#include <math.h>
 
void main(teho, hinta)
{
 
    float teho, hinta;
    cout << "\nSuomen sähköjakeluverkon jännite on 230V.";
    cout << "\nAnna sähkölaitteen teho wateissa: ";
    cin << teho;
    cout << "\nLaite käyttää virtaa: " << teho / 230 << " A.";
    cout << "\nAnna amppeeritunnin hinta penneissä: ";
    cin << hinta;
    cout << "\nTunnin käyttö maksaa: " << teho / 230 * hinta << " p.\n\n"
 
}

Ohjelma 5 - Toistolauseet

Seuraavan ohjelman pitäisi näyttää ja laskea yhteen 0+MAKSIMI-0, 1+MAKSIMI-1, 2+MAKSIMI-2, ... , 20+MAKSIMI-20. Se ei kuitenkaan toimi useasta syystä, selvitä ne ja korjaa.

#include <iostream.h>
#define MAKSIMI 20
 
void main()
{
 
    int a = 0, b = MAKSIMI;
    double c;
 
    do
 
        cout << a << " + " << b << " = " << c << "\n";
        c = a + b;
        a++;
        b--;
 
    while (a <> MAKSIMI);
 
}

Ohjelma 6 - Toistolauseet

Seuraava ohjelma on tehty laskemaan vakion lkm kertoma (esim 5:n kertoma lasketaan 1*2*3*4*5=120). Kääntäjä kuitenkin ilmoittaa virheistä eikä laskenta toimi. Tehtäväsi on korjata ohjelma.

#include <iostream.h>
 
void main()
{
 
    const int lkm = 5;
    int luku = 0, kertoma = 0;
 
    for (luku = 1; lkm > luku; luku++)
        kertoma =* luku;
    cout << "\nLuvun " << lkm << " kertoma on " << kertoma << ".\n\n";
 
}

Ohjelma 7 - Toistolauseet

Seuraava ohjelma laskee syötetyn sisäänostohinnan mukaan tuotteelle OVH-hinnan. Negatiivisilla arvoilla ohjelma ilmoittaa virheestä ja keskeyttää toiminnan. Ohjelma ei kuitenkaan toimi oikein.

#include <iostream.h>
#define LaskeOVH = hinta * 1.1 * 1.22
 
void main()
{
 
    unsigned long hinta = 1;
 
    while (hinta >= 0);
    {
 
        cout << "\n\nAnna sisäänostohinta: ";
        cin >> hinta;
        cout << "OVH: " << LaskeOVH(hinta);
 
    }
 
    cout << "\n\nVirhe! Ohjelma suljetaan\n\n";
 
}

Ohjelma 8 - Toistolauseet

Tässä ohjelmassa pitäisi tulostaa kokonaisluvut 0 - 100 ja niiden vastine heksalukujärjestelmässä. Korjaa virheet.

#include <iostream.h>
 
void main()
{
 
    double luku;
    char merkki[];
 
    for (luku = 0; luku < 100; luku++)
    {
 
        itoa(luku, merkki, 16);
        cout << luku << " = " << merkki[] << " ";
 
    }
 
}

Ohjelma 9 - Toistolauseet

Tässä halutaan ohjelman tulostavan henkilöiden arvosanoja käyttäen ohjelmassa mahdollisimman paljon loogisia suomenkielisiä avainsanoja.

#include <iostream.h>
 
void main()
{
 
    enum ARVOSANA {VALTTAVA = 5, HYVA = 7, KIITETTAVA = 9, ERINOMAINEN = 10};
    enum HENKILÖT {LOPETA, LIISA, TONI, LASSI};
 
    ARVOSANA bio, maa, aid, fys, mat;
    HENKILÖT henk;
    int lopeta = 0;
 
    do
    {
 
        cout << "\n\n---------------------";
        cout << "\n0\t = \tLopeta";
        cout << "\n1\t = \tLiisa";
        cout << "\n2\t = \tToni";
        cout << "\n3\t = \tLassi";
        cout << "\n---------------------";
        cout << "\n\nValitse henkilö: ";
        cin >> henk;
 
        switch henk
        {
 
            case LOPETA:
                lopeta = 1;
 
            case LIISA:
                bio = HYVA;
                maa = KIITETTAVA;
                aid = ERINOMAINEN;
                fys = KIITETTAVA;
                mat = VALTTAVA;
 
            case TONI:
                bio = ERINOMAINEN;
                maa = KIITETTAVA;
                aid = ERINOMAINEN;
                fys = HYVA;
                mat = ERINOMAINEN;
 
            case LASSI:
                bio = VALTTAVA;
                maa = ERINOMAINEN;
                aid = HYVA;
                fys = KIITETTAVA;
                mat = VALTTAVA;
 
            default:
                continue;
 
        }
 
        cout << "\nBiologia: " << bio;
        cout << "\nMaantieto: " << maa;
        cout << "\nAidinkieli: " << aid;
        cout << "\nFysiikka: " << fys;
        cout << "\nMatematiikka: " << mat;
 
    } while (lopeta = 0);
 
}

Ohjelma 10 - Johdetut tyypit

Tässä talletetaan struktuuriin tietoa planeetoista. Tarkoituksena on sitten tulostaa kaikki tieto ruudulle mutta ohjelma sisältää virheitä.

#include <iostream.h>
 
void main()
{
 
    int i;
 
    struct PLANEETAT
    {
 
        char nimi[10]; // planeetan nimi
        double etaisyys; // miljoonaa km
        int sade; // km
 
    };
 
    PLANEETAT aurinkokunta[9] =
        {"Merkurius", 57.9, 2439},
        {"Venus", 108.2, 6052},
        {"Maa", 149.6, 6387},
        {"Mars", 227.9, 3397},
        {"Jupiter", 778.4, 71398},
        {"Saturnus", 1425.6, 60100},
        {"Uranus", 2870, 26320},
        {"Neptunus", 4501, 24300},
        {"Pluto", 5885, 1150};
 
    for (i = 1; i < 9; i++)
    {
 
        cout << "\nNimi: " << aurinkokunta.nimi;
        cout << "\tEtäisyys Auringosta: " << aurinkokunta.etaisyys;
        cout << "\tSäde: " << aurinkokunta.sade;
 
    }
 
}

Ohjelma 11 - Johdetut tyypit

Tämän ohjelman pitäisi tulostaa tietoja suoritetuista kursseista mutta se ei toimi, selvitä viat ja korjaa.

#include <iostream.h>
 
void main()
{
 
    struct PV
    {
 
        unsigned int vv, pv, kk;
 
    };
 
    struct KURSSI
    {
 
        char nimi[10], myontaja[10];
        unsigned int ov;
        PV paiva.vv, paiva.kk, paiva.pv;
 
    };
 
    KURSSI cpp = {"Visual C++", "Lassi", 7, 2, 2, 01};
    KURSSI vb = {"Visual Basic", "Leevi", 1, 9, 12, 03};
 
    cout << "\nKurssi: " << cpp.nimi << "\nOV: " << cpp.ov;
    cout << "\nSuoritettu: " << cpp.paiva.pv << "." << cpp.paiva.kk << "." << cpp.paiva.vv;
    cout << "\nOpettaja: " << cpp.myontaja;
 
    cout << "\n\nKurssi: " << vb.nimi;
    cout << "\nOV: " << vb.ov;
    cout << "\nSuoritettu: " << vb.paiva.pv << "." << vb.paiva.kk << "." << vb.paiva.vv;
    cout << "\nOpettaja: " << vb.myontaja;
    cout << "\n\n";
 
}

Ohjelma 12 - Johdetut tyypit

Seuraavassa pitää kysyä käyttäjältä aloitusvuodesta tähän vuoteen asti syksy- ja kevätkauden arvosana, laskea niiden keskiarvo sekä lopuksi tulostaa kokonaiskeskiarvo. Ohjelma ei kuitenkaan laske oikein, korjaa ohjelmointivirheet.

#include <iostream.h>
#define NYT 2005
 
void main()
{
 
    struct HENKILO
    {
 
        char etu[15], suku[15];
        int aloitus;
 
    };
 
    HENKILO oppilas = {"Matti", "Mainio", 1995};
    double x, num1, num2, vuodenka, lopullinenka;
 
    cout << oppilas.suku << " " << oppilas.etu << "\n\n";
 
    for (x = oppilas.aloitus; x <= NYT; x++)
    {
 
        cout << "\nAnna syksy " << x << ": \t";
        cin >> num1;
        cout << "Anna kevät " << x << ": \t";
        cin >> num2;
        vuodenka = num1 + num2 / 2;
        cout << "Vuoden " << x << " keskiarvo: " << vuodenka;
        lopullinenka += vuodenka;
 
    }
 
    cout << "\n\nLopullinen keskiarvo: " << lopullinenka;
    cout << "\n\n";
 
}

Ohjelma 13 - Johdetut tyypit

Tässä lasketaan lukujen 1-10 potenssit yhdestä kymmeneen. Ohjelma kuitenkin laskee väärin mutta miksi?

#include <iostream.h>
#include <math.h>
 
void main()
{
 
    int x, y;
    double taulu[10][10];
 
    for (x = 0; x <= 10; x++)
    {
 
        for (y = 0; y <= 10; y++)
        taulu[x][y] = pow(x, y);
 
    }
 
    cout << "\nMikä taulu tulostetaan: ";
    cin >> y;
 
    for (y = 0; y <= 10; y++)
        cout << x << " ^ " << y << " = " << taulu[x][y] << "\n";
 
}
Tämän dokumentin kopiointi, levittäminen sekä muokkaaminen on sallittua GNU Free Documentation Licensen version 1.2 tai uudemman Free Software Foundationin julkaiseman version mukaisesti, ilman muuttumattomuuslauseketta tai kansitekstejä. Tätä koskee vastuuvapaus.
Kopio lisenssistä (englanniksi) löytyy täältä.


Alkuperäinen (c) Petteri Hämäläinen

Henkilökohtaiset työkalut