C/C++  Win32  MFC  Java

C/C++ teoria
Ohjelmointitesti
C-kielen alkeet
C++-alkeet
C++-taulukkoja
Koodausohjeita
C++ tehtävät
C++ perusteet
C++ vaikeat
C++ syventävät
Kertaustehtäviä
Win32-teoria
Ohjelmointitesti
Ohjelmointimalli
Ikkunaluokat
Lyhyt pohja
Laajennettu pohja
Win32-tehtävät
Win32 perusteet
Win32 vaikeat
Win32 syventävät
MFC-teoria
Kontrolliluokat
MFC-luokat
Lyhyt pohja
Laajennettu pohja
MFC-tehtävät
MFC perusteet
MFC vaikeat
MFC syventävät
Java-teoria
Javan alkeet
Java pohja
Java-tehtävät
Java konsoli
Java perusteet
Java vaikeat
Java syventävät
 
C++ vaikeat
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";

}

 
Sivutilan tarjoaa Tietokonepalvelu Mikrolahti.