Tehtävänanto Tämän tehtävän tarkoituksena on tutustuttaa sinut C++ -kielisten ohjelmien kirjoittamiseen. Alapuolella näet C++ -kielisen ohjelman. Tehtäväsi on kirjoittaa ohjelma uudelleen. Seuraavassa luvussa opit, miten ohjelma toimii ja mitä se tekee. #include using namespace std; int main() { int luku; cout << "Anna kokonaisluku:"; cin >> luku; cout << "Luku oli: " << luku << endl; } Ratkaisusi #include using namespace std; int main() { int luku; cout << "Anna kokonaisluku:"; cin >> luku; cout << "Luku oli: " << luku << endl; } Tehtävänanto Tee toimiva C++ -kielinen ohjelma, joka käynnistettäessä tulostaa monitorille sanat: "Terve vaan kaikille!", sekä rivinvaihtomerkin huutomerkin jälkeen. Tulostuksen jälkeen ohjelma sulkee itsensä. Vihje: Kaikki ohjelman tekemiseen tarvittava löytyy luvun 2 esimerkkiohjelmasta. Kun olet ymmärtänyt esimerkin toimintaperiaatteen, sinun pitäisi pystyä tekemään ohjelma helposti. Ohjelmassa ei tarvita lokeroita eli muuttujia. Ratkaisusi #include using namespace std; int main() { cout << "Terve vaan kaikille!" << endl; } Tehtävänanto Tee ohjelma, joka pyytää käyttäjältä kaksi kokonaislukua, laskee lukujen summan ja tulostaa tuloksen näytölle. Tulostuksen jälkeen ohjelma sulkee itsensä. Vihje: Ohjelma voidaan kirjoittaa pitkälti samoin kuin luvun esimerkki. Voit toteuttaa ohjelman monella tavalla, mutta todennäköisesti tarvitset ohjelmassa kahta muuttujaa. Tässä ohjelmassa tarvitset yhteenlaskuoperaattoria +. Ratkaisusi #include using namespace std; int main() { int luku_1, luku_2; cout << "Anna ensimmäinen luku:"; cin >> luku_1; cout << "Anna toinen luku:"; cin >> luku_2; cout << "Antamiesi lukujen summa on " << luku_1 + luku_2 << endl; } Tehtävänanto Tee ohjelma, joka pyytää käyttäjältä markkamäärän ja muuntaa syötetyn markkamäärän euroiksi. Lopuksi ohjelma tulostaa markkamäärän euroina näytölle. Euron kerroin on 5.94573. Ohjelmassa käytetään double-tyypin muuttujia. Ratkaisusi #include using namespace std; int main() { double euron_kerroin=5.94573; double markat; cout << "Syötä jokin markkamäärä:"; cin >> markat; cout << "Markat euroina:" << markat / euron_kerroin << endl;; } Tehtävänanto Tee ohjelma, joka kysyy käyttäjältä ympyrän säteen ja laskee annetun säteen perusteella ympyrän pinta-alan. Lopuksi pinta-ala tulostetaan näytölle. Piin (?) arvona käytetään likiarvoa 3.142. Käyttäjän oletetaan syöttävän säteen arvoksi kokonaislukuja. Vihje: Ympyrän ala: A = ? · r2, jossa r on ympyrän säde. Ratkaisusi #include using namespace std; int main() { float pi=3.142; int sade; cout << "Anna ympyrän säde:"; cin >> sade; cout << "Ympyrän ala annetulla säteellä:" << (sade*sade)*pi << endl; } Tehtävänanto Tee ohjelma, joka kysyy käyttäjältä kaksi kokonaislukua ja tulostaa lukujen lukujen summan, erotuksen, tulon ja jakojäännöksen. Ratkaisusi #include using namespace std; int main() { int luku_1, luku_2; cout << "Syötä ensimmäinen kokonaisluku:"; cin >> luku_1; cout << "Syötä toinen kokonaisluku:"; cin >> luku_2; cout << luku_1 << "+" << luku_2 << " = " << luku_1+luku_2 << endl; cout << luku_1 << "-" << luku_2 << " = " << luku_1-luku_2 << endl; cout << luku_1 << "*" << luku_2 << " = " << luku_1*luku_2 << endl; cout << "Jakojäännös:" << luku_1%luku_2 << endl; return 0; } Tehtävänanto Tee ohjelma, joka laskee suorakulmaisen kolmion hypotenuusan pituuden ohjelmaan syötettyjen kateettien pituuksien perusteella. Kateettien pituuksien odotetaan olevan kokonaislukuja, kun taas hypotenuusan pituus sijoitetaan double-muuttujaan. Vihje: Neliöjuuren voi laskea seuraavasti (palauttaa double-tyypin arvon): double juuri = sqrt(double_luku); Tarvitset cmath-kirjastoa. Ratkaisusi #include #include using namespace std; int main() { int luku_1, luku_2; double juuri; cout << "Anna ensimmäinen kateetti:"; cin >> luku_1; cout << "Anna toinen kateetti:"; cin >> luku_2; juuri = (luku_1*luku_1)+(luku_2*luku_2); cout << "Hypotenuusan pituus:" << sqrt(juuri) << endl; return 0; } Tehtävänanto Tee ohjelma, joka pyytää käyttäjältä kokonaisluvun ja tarkistaa, onko luku parillinen vai pariton. Jos syötetty luku on parillinen, tulostetaan näytölle "Luku 178 on parillinen.", jos luku on pariton, tulostetaan näytölle "Luku 233 on pariton.". Vihje: Luku on parillinen, mikäli sen jakojäännös kahdella jaettaessa on 0. Ratkaisusi #include using namespace std; int main() { int arvo; cout << "Anna kokonaisluku:"; cin >> arvo; if(arvo%2 ==0) cout << "Luku" << arvo << "on parillinen." << endl; else cout << "Luku" << arvo << "on pariton." << endl; } Tehtävänanto Tee ohjelma, joka kysyy ensin käyttäjän sukupuolen ja tämän jälkeen iän. Lopuksi ohjelma tulostaa jonkin lausahduksen seuraavan ohjeen mukaisesti: Mies 0-55 vuotta: "Olet mies parhaassa iässä!" Mies 56-100 vuotta: "Olet viisas mies!" Nainen 0-55 vuotta: "Olet neito kauneimmillaan!" Nainen 56-100 vuotta: "Olet nuori ikäiseksesi!" Muuten "Ohjelmassa tapahtunut virhe!" Ikä käsitellään kokonaisluku muuttujana ja sukupuoli merkkimuuttujana (m/n). Isoja kirjaimia ei tarvitse huomioida. Vihje: Käytä riittävästi aikaa ohjelman suunnitteluun, ennen kuin ryhdyt kirjoittamaan ohjelmaa. Ratkaisusi #include using namespace std; int main() { int ika; char sukupuoli; cout << "Oletko mies vai nainen (m/n)"; cin >> sukupuoli; cout << "Anna ikäsi:"; cin >> ika; if(ika > 0 && ika < 55) if (sukupuoli == 'm') cout << "Olet mies parhaassa iässä!" << endl; else if (sukupuoli == 'n') cout << "Olet neito kauneimmillaan!" << endl; if(ika > 55 && ika < 101) if (sukupuoli == 'm') cout << "Olet viisas mies!" << endl; else if (sukupuoli == 'n') cout << "Olet nuori ikäiseksesi!" << endl; if(ika <0 || ika>100) cout << "Ohjelmassa tapahtunut virhe!" << endl; } Tehtävänanto Täydennä aikaisemmin laatimaasi laskinohjelmaa niin, että käyttäjä voi valita, mikä laskutoimitus suoritetaan. Ohjelma kysyy ensin mikä laskutoimitus suoritetaan. Tämän jälkeen ohjelma kysyy kokonaisluvut, suorittaa laskutoimituksen ja tulostaa saadun tuloksen. Ohjelman valinta on tehtävä käyttämällä switch()-lausetta. Vihje: Laskutoimitukset tulostetaan seuraavasti: Vähennyslasku: x-y = z Yhteenlasku: x+y = z Kertolasku: x*y = z Jakojäännös: x%y = z Ratkaisusi #include using namespace std; int main() { int luku_1, luku_2, valinta; cout << "Käytössäsi on seuraavat laskutoimitukset:\n"; cout << "1: vähennyslasku\n"; cout << "2: yhteenlasku\n"; cout << "3: kertolasku\n"; cout << "4: osamäärä\n"; cout << "5: jakojäännös\n"; cout << "Valitse laskutoimitus:"; cin >> valinta; cout << "Anna eka luku:"; cin >> luku_1; cout << "Anna toinen luku:"; cin >> luku_2; switch(valinta) { case 1: cout << luku_1 << "-" << luku_2 << " = " << luku_1-luku_2 << endl; break; case 2: cout << luku_1 <<"+" << luku_2 <<" = "<< luku_1+luku_2 << endl; break; case 3: cout << luku_1 << "*" << luku_2 << " = " << luku_1*luku_2 << endl; break; case 4: cout << luku_1 << "/" << luku_2 << " = " << luku_1/luku_2 << endl; break; case 5: cout << luku_1 << "%" << luku_2 << " = " << luku_1%luku_2 << endl; break; default: cout << "Paina ensi kerralla lukua 1-5!" << endl; } return 0; } Tehtävänanto Tee ohjelma, joka kysyy käyttäjältä kokonaisluvun n (n>0) ja tulostaa monitorille luvut 1,2,3..n allekkain. Tee ohjelma käyttäen for-lausetta. Ratkaisusi #include using namespace std; int main() { int kokonaisluku, i=1; cout << "Anna kokonaisluku:"; cin >> kokonaisluku; for(i; i<=kokonaisluku; i++) { cout << i << endl; } } Malliratkaisu #include using namespace std; int main(void) { int luku, i; cout << "Anna kokonaisluku:"; cin >> luku; if (luku > 0) { for(i=1;i<=luku;i++) { cout << i << endl; } } } Tehtävänanto Tee ohjelma, joka kysyy käyttäjältä kokonaisluvun n (n>0) ja tulostaa luvun kertoma näytölle. Esimerkiksi n:n kertomaa merkitään merkillä n!, joka tarkoittaa lukua, joka saadaan seuraavasti 1*2*3...*n. Ratkaisusi #include using namespace std; int main() { int kertoma=1, luku, i; cout << "Anna kokonaisluku:"; cin >> luku; for(i=1; i<=luku; i++) { kertoma=kertoma*i; } cout << "Luvun " << luku << " kertoma on " << kertoma << endl; } Malliratkaisu #include using namespace std; int main(void) { int luku, kertoma = 1; cout << "Anna kokonaisluku:"; cin >> luku; for(int i=1;i<=luku;i++) { kertoma = kertoma*i; } cout << "Luvun " << luku << " kertoma on " << kertoma << endl; } Tehtävänanto Tee ohjelma, joka kysyy oppilaiden koearvosanoja (kokonaisluvut 4-10 käytössä) ja laskee syötettyjen arvosanojen keskiarvon. Ohjelman tulee ottaa vastaan arvosanoja, kunnes arvosanojen syöttö lopetetaan negatiivisella kokonaisluvulla. Lopuksi ohjelma tulostaa arvosanojen lukumäärän sekä lasketun keskiarvon. Vihje: Voit laatia ohjelman joko while- tai do...while-lauseen avulla. Arvosanojen ja keskiarvon tallentamiseen kannattaa käyttää liukulukutyyppisiä muuttujia. Ratkaisusi #include using namespace std; int main(void) { float summa=0, lukumaara=0; float numero=0, keskiarvo; cout << "Ohjelma laskee koearvosanojen keskiarvon.\n"; cout << "Lukujen syöttämisen lopetus negatiivisella luvulla.\n"; while(numero>=0) { cout << "Anna arvosana (4-10)"; cin >> numero; if(numero>3 && numero<11) { summa= summa+numero; lukumaara++; } else if(numero<0) { break; } } keskiarvo=summa/lukumaara; cout << "Ohjelmaan syötetty " << lukumaara << " arvosanaa." << endl; cout << "Arvosanojen keskiarvo:" << keskiarvo << endl; return(0); } Malliratkaisu #include using namespace std; int main(void) { int summa = 0, luku, lukum = 0; double ka; cout << "Ohjelma laskee koearvosanojen keskiarvon." << endl; cout << "Lukujen syöttämisen lopetus negatiivisella luvulla." << endl; do { cout << "Anna arvosana (4-10)"; cin >> luku; if(luku>=4 && luku <=10) { lukum++; summa = summa+luku; } }while(luku >= 0); ka = (double)summa/lukum; cout << "Ohjelmaan syötetty " << lukum << " arvosanaa." << endl; cout << "Arvosanojen keskiarvo:" << ka << endl; } Tehtävänanto Alla oleva ohjelma kysyy käyttäjältä kolme kokonaislukua ja tulostaa syötetyistä luvuista suurimman ja pienimmän näytölle. Tehtävänäsi on kirjoittaa ohjelmasta puuttuvat funktiot (suurin() ja pienin()), jotka saavat parametreina käyttäjän syöttämät kokonaisluvut ja palauttavat nimensä mukaiset kokonaisluvut. Täydennettävä ohjelma: #include using namespace std; int suurin(int eka, int toka, int kolmas); int pienin(int eka, int toka, int kolmas); int main() { int luku1, luku2, luku3, suurinLuku, pieninLuku; cout << "Syötä ensimmäinen kokonaisluku:"; cin >> luku1; cout << "Syötä toinen kokonaisluku:"; cin >> luku2; cout << "Syötä kolmas kokonaisluku:"; cin >> luku3; suurinLuku = suurin(luku1, luku2, luku3); pieninLuku = pienin(luku1, luku2, luku3); cout << "Syöttämistäsi luvuista suurin oli " << suurinLuku; cout << " ja pienin " << pieninLuku << "." << endl; } Huom! Sinun tulee siis kirjoittaa ainoastaan koodista puuttuvat funktiot. Älä kopioi yllä olevaa koodia palautuskenttään. Ratkaisusi int suurin(int luku1, int luku2,int luku3) { int suurin; suurin = luku1; if (luku2 > suurin) { suurin = luku2; } if (luku3 > suurin){ suurin = luku3; } return suurin; } int pienin(int luku1, int luku2,int luku3) { int pienin; pienin = luku1; if (luku2 < pienin) { pienin = luku2; } if (luku3 < pienin){ pienin = luku3; } return pienin; } Malliratkaisu int pienin(int eka, int toka, int kolmas) { int temp; if (eka <= toka){ temp = eka; }else{ temp = toka; } eka = temp; if (eka <= kolmas){ temp = eka; }else{ temp = kolmas; } return temp; } int suurin(int eka, int toka, int kolmas) { int temp; if (eka >= toka){ temp = eka; }else{ temp = toka; } eka = temp; if (eka >= kolmas){ temp = eka; }else{ temp = kolmas; } return temp; } Tehtävänanto Tee ohjelma, joka laskee tietyn ajanjakson aikana tehtyjen työtuntien määrän sekä tulostaa tuntien yhteismäärän, keskimääräisen työpäivän pituuden ja syötetyt tunnit eriteltynä. Ohjelman tulee aluksi kysyä, kuinka monen työpäivän tiedot syötetään (max. 30 päivää). Tämän jälkeen ohjelma kysyy päivittäiset työtunnit. Vihje: Ohjelman toteutus onnistuu helpoimmin käyttämällä apuna taulukkoa, jonka koko on 30 alkiota. Ratkaisusi #include using namespace std; int main(void) { int paiva, paivat; float total=0, laskuri, keskiarvo; cout << "Ohjelma laskee yhteen haluamasi ajanjakson aikana tehdyt\n"; cout << "työtunnit sekä keskimääräisen työpäivän pituuden.\n"; cout << "Kuinka monta päivää:\n"; cin >> paivat; float taulukko[paivat+1]; int indeksi=1; for(paiva=1; paiva <= paivat; paiva++) { cout << "Anna " << paiva << ". päivän työtunnit:"; cin >> laskuri; taulukko[paiva]=laskuri; total = total+laskuri; } cout << "Tehdyt tunnit yhteensä: " << total << endl; keskiarvo = total / paivat; cout << "Keskimääräinen työpäivän pituus: " << keskiarvo << endl; cout << "Syötetyt tunnit: "; for(indeksi=1; indeksi<=paivat; indeksi++) { cout << taulukko[indeksi] << " "; } cout << "\n"; } Malliratkaisu #include using namespace std; int main(void) { int i, koko; double yhteensa = 0, ka, tunnit[30]; cout << "Ohjelma laskee yhteen haluamasi ajanjakson aikana tehdyt" << endl; cout << "työtunnit sekä keskimääräisen työpäivän pituuden." << endl; cout << "Kuinka monta päivää:" << endl; cin >> koko; if (koko > 30){ cout << "Annoit liian monta päivää!"; return 1; } for(i=0;i> tunnit[i]; yhteensa+=tunnit[i]; } ka = yhteensa/koko; cout << "Tehdyt tunnit yhteensä: " << yhteensa << endl; cout << "Keskimääräinen työpäivän pituus: " << ka << endl; cout << "Syötetyt tunnit: "; for (i=0;i