|
|
|
| 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";
}
|
|