Cpp tehtäviä vaikeat
Mureakuha
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"; }
Kopio lisenssistä (englanniksi) löytyy täältä.
Alkuperäinen (c) Petteri Hämäläinen
