Hei,
minun tulisi tehdä ihan alkeellisia ohjelmointi juttua c++:lla, tarvitsisin tälläiset koodit; (KOKONAISUUDESSAAN, ALUSTA LOPPUUN)
1. Ohjelma, joka pyytää käyttäjää antamaan joko vastaukseksi luvun 1 tai 2. Jos käyttäjä antaa luvun 1, ohjelma tulostaa "oikein", jos käyttäjä antaa luvun 2 ohjelma tulostaa "väärin"
2. Ohjelma, joka kysyy käyttäjältä kolme kokonaislukua ja tallettaa ne muuttujiin a, b ja c. Lopuksi ohjelma kertoo, onko luku c lukujen a ja b välissä vai välin ulkopuolella. Huomioi, että ohjelman pitäisi toimia riippumatta siitä onko a suurempi kuin b vai toisinpäin.
3. Pieni peli. Peli arpoo luvun väliltä 0-9 ja antaa käyttäjän arvata arvottua lukua. Käyttäjä arvaa niin kauan kunnes arvaus on oikein tai hän antaa syötteeksi jonkin muun kuin luvun väliltä 0-9 (esim. kirjain tai suurempi luku) Lopuksi peli kertoo oikean luvun ja arvausten lukumäärän.
4. Ohjelma, joka kysyy käyttäjältä kysymyksen "Oletko täysi-ikäinen? Vastaa k(kyllä) tai e(en)" , johon vastaus on kyllä (k) tai ei (e). Ohjelma kysyy samaa kysymystä käyttäjältä niin kauan kunnes vastaus on oikein.
Tästä voit lähteä liikkeelle. Noin alkeellisen koodin ohjelmoimisen oppimiseen ei kauheasti tarvitse vaivaa nähdä, riittää että lukee em. oppaan 3 ensimmäistä osaa. Kukaan toivottavasti ei anna valmista koodia, jos et jaksa edes yrittää itse.
Tässä aikaansaannokseni
#include <iostream> int main(){ int 1; int 2; cin >> 1; if(1 == 1){ cout << "Oikein"; }else{ cout << Väärin"; } return 0; }
Tulee vain hirveä kasa virheitä
Mod. lisäsi kooditagit
Kääntäjäsi kertoi takuulla lähes samat virheet. Lisäksi vertailu on periaatteessa oikein, mutta tuo on aina tosi, joten else haaraa ei käsitellä koskaan...
Lue oppaita, niissä opetetaan. Kaikkea ei tarvitse oppia ensimmäisellä lukukerralla. Lue uudestaan ja tee kokeiluja oppaan esimerkkiohjelmilla; toisto kannattaa. (Jos et millään opi, olet varmaan valinnut vääränlaisen kurssin.)
Foorumin periaatteisiin kuuluu, että valmista koodia ei anneta ilman syytä, ja kysyjän laiskuus ei ainakaan ole hyvä syy. Olet itse mennyt ohjelmointikurssille, joten saat myös itse suorittaa sen; muuten et opi mitään etkä myöskään ole ansainnut kurssista saatavaa merkintää tai opintopisteitä. Selviytymällä itse ensimmäisestä ohjelmointikurssistasi opit toivottavasti myös yhden tärkeimmistä asioista: valmis koodi ei putoa taivaalta eikä myöskään synny arpomalla, vaan sen eteen on nähtävä jonkin verran vaivaa, aivan kuten matematiikan- tai fysiikantehtävienkin ratkaisujen. (Toki taitojen kasvaessa vaivat pienenevät; esimerkiksi nuo neljä ohjelmaa syntyisivät minulta ehkä nopeammin kuin tämä viesti.)
Apua noihin tehtäviin löytyy suoraan C++-oppaista, ja lisäksi olet varmasti saanut oppilaitoksen puolesta muuta materiaalia, oppitunteja tai luentoja. Oppaissa on myös runsaasti esimerkkejä, joita voit soveltaa omiin ongelmiisi.
Saa toki kysyä, jos jokin asia ei oppaiden huolellisen lukemisen jälkeenkään selviä. Asiaksi ei kuitenkaan kelpaa "miten teen tällaisen ohjelman", vaan ongelma pitäisi pystyä rajaamaan johonkin yksittäiseen kohtaan.
No hyvä tajusin jotenkin tuon vertailun, mutta miten toinen tehtävä on mahdollista suorittaa. Jos a = 1 ja b = 10 ja c = 8, niin tuo on ihan helppo se on välissä. Mutta jos a = 10 ja b = 1 ja c = 8, niin itse näen, että se on välissä, mutta tuloste on silti ulkopuolella. Tämä on kai joku kompa vai?
Ei, ei ole mikään kompa. Älä nyt hätäile vaan lue lisää. Esimerkiksi tuossa useaan kertaan linkitetyssä opassarjassa kerrotaan vertailuista ja niiden yhdistelystä JA- ja TAI-operaatioilla. Käytä paperia ja kynää ja kirjoita asiat matemaattisina kaavoina tai edes sanallisesti. Arvailemalla et saa mitään aikaan, vaan ohjelmoinnin perustana on oltava logiikka.
Mistä itse tiedät, että luku 8 on lukujen 10 ja 1 välissä? Mitä välissä oleminen oikeastaan tarkoittaa? Selitä.
Metabolix kirjoitti:
Mistä itse tiedät, että luku 8 on lukujen 10 ja 1 välissä? Selitä.
No 8 on enemmän kuin 1 ja vähemmän kuin 10 ihan helppoa.
Nonni, nyt vaan muodostat ehdon, joka tarkistaa tuon...
ohjelmointipoika kirjoitti:
No 8 on enemmän kuin 1 ja vähemmän kuin 10 ihan helppoa.
Hienoa! Kirjoita tämä sitten muuttujilla a, b ja c ja C++:n operaattoreilla <, > ja &&. Mieti sitten, miten saat tarkistettua mainitsemasi kaksi tapausta (kun a ja b vaihtavat paikkaa), ja yhdistä nämä tapaukset ||-operaattorilla.
Edit. Ennen kuin kysyt kolmannen tehtävän arpomisesta, lue se kurssimateriaali ja tämä aiempi keskustelu.
Ajatelin jotakin tällaista, mutta nyt se sanoo, että on aina ulkopuolella, vaikka c arvo olisi ihan mikä vain. Ideana olisi siis noiden a:n ja b:n vaihto jos a on suurempi kuin b.
#include <iostream> using namespace std; int main(){ int a = 10 ; int b = 1; int c = 6; if(a > b){ b = a; a = b; } if(a < c && c < b){ cout << "Välissä" << endl; }else{ cout << "Ulkopuolella" << endl; } return 0; }
Mieti uudestaan tuota kohtaa, jossa yrität vaihtaa a:n ja b:n. Ajatus on oikea, mutta mitä vaihtokoodissa nyt tapahtuukaan? (Mitkä ovat muuttujien arvot ensimmäisen sijoituksen b = a jälkeen?) Ongelmaan on myös hyvin yksinkertainen ratkaisu.
Toinen vaihtoehto on, kuten aiemmin sanoin, tehdä varsinainen välissäolotarkistus kummallekin tapaukselle erikseen. Kannattaa toki oppimisen vuoksi toteuttaa kummatkin ratkaisut.
Muuttujien arvot ovat samat, joten vaihto ei ollut noin helppo. En ole varma saako apumuuttujaa käyttää, mutta otin riskin ja tällaisen tuloksen sain aikaan.
#include <iostream> using namespace std; int main(){ int a = 1 ; int b = 10; int c = 4; if(a > b){ int d; d = a; a = b; b = d; } if(a < c && c < b){ cout << "Välissä" << endl; }else{ cout << "Ulkopuolella" << endl; } return 0; }
Tulokset ovat ainakin ihan ok.
Aivan oikea ratkaisu, ja olisi outoa, jos tuota ei sallittaisi. Kokeile nyt kuitenkin harjoituksen vuoksi selvitä myös ilman arvojen vaihtamista. Tämä onnistuu tietenkin muokkaamalla jälkimmäistä if-lausetta niin, että se tarkistaa kummatkin tapaukset.
Näinkö?
#include <iostream> using namespace std; int main(){ int a = 10; int b = 1; int c = 4; if(a < c && c < b){ cout << "Välissä" << endl; }else if(a > c && c > b){ cout << "Välissä" << endl; }else{ cout << "Ulkopuolella" << endl; } return 0; }
Tuo on yksi tapa. Voit myös yhdistää ehdot ||-operaattorilla, joka tarkoittaa "tai":
if ((ehto_acb) || (ehto_bca)) { // Välissä } else { // Ulkopuolella }
Muuten, kannattaisi sisentää myös main-funktion sisältöä yksi taso (kuten oppaiden esimerkeissä). Nyt se ei ehkä tunnu vielä tärkeältä, mutta kun ohjelmassa on useampi funktio, sisennys selkeyttää.
Aihe on jo aika vanha, joten et voi enää vastata siihen.