|
|
|
| C++ kertaustehtäviä |
|
Tehtävät 1
- kirjoitussäännöt
|
|
Milloin käytetään
lohkosulkeita?
Mikä ero on
seuraavilla muuttujien määrityksillä?
const
int pituus;
static
int paino;
int
ika;
Mitä tarkoittavat
termit viittausalue, näkyvyys ja elinikä?
|
|
Tehtävät 2
- tyypit, muuttujat ja vakiot
|
Määrittele seuraavat
symboliset vakiot:
- tämä vuosi
- absoluuttinen
nollapiste -273.15 C
- valonnopeus
tyhjiössä 299792458 m/s
- elektronin
varaus 1.6021773 * 10 ^ -19 C
- joka kuukauden
sisältämien päivien lukumäärä omaan vakioonsa
Määrittele
merkkijonomuuttuja koti ja
alusta se kotikaupunkisi nimellä.
Määrittele
merkkimuuttuja sukupuoli
ja alusta se
joko M- tai N-merkillä riippuen omasta sukupuolestasi.
|
|
Tehtävät 3
- ohjelman perustoiminnot
|
|
Kirjoita ohjelma, joka
kysyy käyttäjältä valtion nimen ja tulostaa sen ruutuun.
Kirjoita ohjelma,
joka kysyy käyttäjältä luvun ja tulostaa sen muutettuna
kokonaisluvuksi, desimaaliluvuksi sekä sitä vastaavan ASCII-merkin.
Jos Maasta ammutaan
raketti tarpeeksi suurella nopeudella, kulkee raketin ohjaajan mielestä
aika hitaammin kuin Maahan jääneiden mielestä. Kaavan muodossa
Maassa kuluva aika voidaan laskea seuraavasti; X
= t/sqrt(1 - v*v / c*c),
jossa t
on raketin ohjaajan mittaama aika, v
raketin nopeus ja c
valonnopeus. Kirjoita ohjelma, joka laskee Maassa kuluneen ajan ja
raketissa kuluneen ajan kun raketti käy mutkan seuraavissa tähdissä
nopeudella, joka kysytään ohjelmassa:
- Alpha Centauri,
etäisyys 4,3 valovuotta.
- Sirius, etäisyys
8,7 valovuotta.
- Tau Ceti, etäisyys
11,8 valovuotta.
C++
ratkaisu
|
|
Tehtävät 4
- vertailu- ja toistolauseet
|
Kirjoita ohjelma, joka
kysyy käyttäjältä merkkejä yksi kerrallaan, kunnes käyttäjä syöttää
nollan ja laskee ja näyttää merkkien ASCII-koodien yhteisarvon.
C++
ratkaisu
Kirjoita
ohjelma, jossa käyttäjältä kysytään käyttäjätunnus ja
salasana. Käyttäjällä on kolme mahdollisuutta syöttää
oikea yhdistelmä, jolloin järjestelmä päästää eteenpäin.
Muuten ohjelma ilmoittaa virheilmoituksella.
C++
ratkaisu
Kirjoita ohjelma,
joka tulostaa:
- vain parilliset
numerot väliltä 2 - 100.
- kolmella tai
viidellä jaolliset numerot 0 - 100.
- numerot 0, 1, 2,
3, 4, 5, 10 ... 15, 20 ... 25, ... aina 95 asti.
- numerot 1 - 10,
täydet kymmenet 10 - 100, täydet sadat 100 - 1000, täydet
tuhannet 1000 - 10000 jne aina miljardiin asti.
C++
ratkaisu
Kirjoita ohjelma,
jossa käyttäjältä kysytään satunnaisia kertolaskuja ja ohjelma
pitää kirjaa oikeiden ja väärien vastauksista lukumäärästä.
Ohjelma lopettaa laskennan negatiivisella vastauksella. C-kielessä
satunnaislukuja tuotetaan rand-funktiolla (esim. int
a = rand();)
joka löytyy stdlib.h -otsikkotiedostosta.
C++
ratkaisu
|
|
Tehtävät 5
- merkkitiedon ja merkkijonon käsittely
|
Kirjoita ohjelma, joka
kysyy käyttäjältä merkkejä yksi kerrallaan ja ilmoittaa onko
merkki:
- iso kirjain
- pieni kirjain
- numero
- jokin muu
erikoismerkki
Ohjelma lopettaa
risuaidalla eli '#'-merkillä.
C++
ratkaisu
Kirjoita ohjelma,
joka kysyy käyttäjältä merkkejä 'a'...'z' ja 'A'...'Z' yksi
kerrallaan, kunnes käyttäjä syöttää jonkin muun merkin. Ohjelma
näyttää syötetyn merkkijonon kokonaisuudessaan ja laskee merkkien
ASCII-koodien yhteisarvon.
C++
ratkaisu
Kirjoita ohjelma,
joka kysyy käyttäjältä kaksi merkkijonoa ja liittää ne yhteen
siten, että pitempi merkkijono on ensin ja lyhempi vasta sitten
riippumatta syöttöjärjestyksestä.
C++
ratkaisu
|
|
Tehtävät 6
- lisää tyypeistä
|
Kirjoita ohjelma, joka
kysyy käyttäjältä pieniä kirjaimia yksitellen ja pitää yllä
taulukkoa syötettyjen merkien määrästä. Kun käyttäjä syöttää
pisteen, ohjelma tulostaa koko taulukon, josta selviää kuinka monta
kappaletta kutakin merkkiä syötettiin.
C++
ratkaisu
Muodosta C-kielen
enum-rakenteella BOOLEAN
tietotyyppi, joka voi saada arvoja TOSI
= 1 ja EPATOSI
= 0. Muodosta struktuuri AUTO
ja tätä struktuuria käyttävä muuttuja. Struktuuri käsitää
seuraavat tiedot; merkki (char[20]), hinta uutena (long),
valmistusvuosi (int), ajetut kilometrit (float), katsastettu (BOOLEAN).
Määrittele ja alusta muuttuja oman autosi tiedoilla. Tulosta nämä
tiedot, sekä laske tietoja hyväksi käyttäen auton tämän päivän
hinta (hinta putoaa kymmenesosan joka vuosi) sekä keskimääräinen päivän
ajomatka.
C++
ratkaisu
Toteuta CD-levyjen
tietokantaohjelma, jossa on seuraava valikko:
===============================
a = lisää uusi CD
b = poista CD
c = selaa tietoja
x = lopeta
===============================
Ohjelmassa on tilaa
viidelle tietueelle. Jokaisesta levystä talletetaan 6 tietoa; koodi,
esittäjä, levyn nimi, julkaisuvuosi, kokonaiskesto ja sanallinen
arvostelu. Alusta käyttämättömät solut miinus-merkillä tai
numerolla nolla. Ohjelman täytyy itse tunnistaa onko jokin tietue käytössä
vai onko se tyhjä, eikä käytettyjen tietueiden päälle saa
kirjoittaa.
C++
ratkaisu
Kirjoita ohjelma,
jossa arvotaan lottonumeroita. Käyttäjältä kysytään ensin 7
numeroa, ohjelma arpoo satunnaisesti toiset 7 numeroa ja lopuksi näyttää
kuinka monta käyttäjä sai oikein. Luo kaksi taulukkoa. Toiseen
talletetaan käyttäjän numerot (esim. valitut[39], jossa 1
tarkoittaa valittua ja 0 ei valittua) ja toiseen arvotut numerot
(esim. arvotut[39], jossa 1 tarkoittaa arvottua ja 0 ei arvottua). Sekä
kone, että käyttäjä eivät saa valita samaa numeroa kuin yhden
kerran.
C++
ratkaisu
|
|
Tehtävät 7
- aliohjelmat
|
Kirjoita funktio Suureksi(merkki),
joka toimii samalla tavalla kuin ctype-kirjaston funktio toupper(merkki),
mutta se toimii myös merkeillä å, ä, ö. Funktio siis muuntaa
kirjainmerkin suureksi. VINKKI: Skandinaavisten merkkien ASCII-koodit
ovat: ä 132, å 134, ö 148, Ä 142, Å 143, Ö 153. Muut merkit: a
97, ..., z 122 ja A 65, ..., Z 90. Käytä tätä tietoa hyväksesi.
C++
ratkaisu
Kirjoita
C++-funktio Boforit,
joka käyttää alla olevaa taulukkoa palauttaakseen tuulennopeuden
boforeina riippuen saamastaan nopeus-parametristä.
| Boforia |
Nopeus max
(m/s) |
Nimi |
| ======= |
================ |
=========== |
| 0 |
0.5 |
Tyyni |
| 1 |
1.7 |
Hiljainen |
| 2 |
3.3 |
Heikko |
| 3 |
5.2 |
Heikonlainen |
| 4 |
7.4 |
Kohtalainen |
| 5 |
9.8 |
Navakka |
| 6 |
12.4 |
Kova |
| 7 |
15.2 |
Luja |
| 8 |
18.2 |
Raju |
| 9 |
21.5 |
Myrsky |
| 10 |
25.1 |
Kova
myrsky |
| 11 |
29.0 |
Ankara
myrsky |
| 12 |
yli 29.0 |
Hirmumyrsky |
C++
ratkaisu
Kirjoita funktio MassaEnergiaksi,
joka ottaa esineen massan (merkitään m) parametrinä ja palauttaa
sen vastaavuuden enegiassa Jouleina (lasketaan e=m*c*c) ja sille pääohjelma.
Jos mikroaaltouunin teho on 1000 W eli se kuluttaa energiaa 1000
Joulea sekunnissa, kuinka monta vuotta laite toimisi annetulla
massalla, jos kaikki energia saataisiin käyttöön? Valonnopeus c on
299792458 m/s.
C++
ratkaisu
|
|