Löytääkö kukaan tästä yksinkertaisesta ohjelmasta virhettä?
#include <iostream.h> void main() { int luku; cout << "Anna luku" << endl; cin >> luku; cout << "Pöh, ei " << luku << " nyt mitenkään kummoinen ole."; }
Minä yritin etsiä virhettä, mutta kääntäjä ilmoitti vain virhettä.
`main´ must return `int´
Ja muut virheeseen kuuluvat jutut, voit katsoa omasta kääntäjästäsi jos se näyttää samaa.
Se tarkoittaa sitä että pääfunktion pitää palauttaa jokin arvo eli lisää main funktion loppuun return 0;
ja tuon void main() pitäisi olla int main() ainakin nykykääntäjillä.
Argh!
Vielä kun kirjoitit sen virheenkin tuohon, niin mikset sitten korjannut sitä? Siinähän sanotaan aivan suoraan, että main-funktion pitää palauttaa int, eli määrittelyyn "int main" eikä "void main", ja loppuun "return 0".
Äläkä käytä iostream.h:ta vaan pelkkää iostreamia, kuten nykyään kuuluu. Silloin cout on std::cout ja cin vastaavasti, tai sitten voi tutustua sellaiseen kuin using-lause.
Tuollaiset oppaat ja kirjat pitäisi polttaa. Valitettavasti niitä vain yhä on olemassa.
Kääntäjäsi vaatii, että pääohjelma main() palauttaa kokonaisluvun (int), mikä on käsittääkseni nykyisen C++-standardin vaatimus. Eli muuta koodia muotoon
int main() { // Paluuarvo tyyppiä int // koodia return 0; // Palautetaan kokonaisluku 0 (suoritus onnistui) }
Jasso, kaksi ehti edelleni. Olen hidas.
Nyt korjasin nuo, mutta edelleen ongelmia:
#include <iostrem.h> int main() { int luku; cout << ("Anna luku") << (); cin >> luku; cout << ("Pöh, ei ") << luku << (" nyt mitenkään kummoinen ole."); return 0; }
Mutta en kyllä ymmärrä mitä rivillä 6 on vikana kun se ilmoittaa että
`cout´ undeclared (first use this function)
toinen virhe
expected primary-expression before '>'
ja rivillä 7 vielä tämä
`cin´ undeclared (first use this function)
Koodissa ei varsinaisesti ole vikaa, kerrotko kääntäjän? Et vaan koittais paljaalla C -kääntäjällä kääntää? Tai sitte sulla on joku C++-kääntäjä joka ei tollasta "vanhemmanmallista" koodia suostu kääntämään.
Anyway, kokeile vaikka tällästä:
#include <iostrem> // hoks, ei .h using namespace std; int main() { int luku; cout << ("Anna luku") << (); cin >> luku; cout << ("Pöh, ei ") << luku << (" nyt mitenkään kummoinen ole."); return 0; }
Eli tosta std -namespacesta löytyy noi cout ja cin oliot, vaihtoehtosesteti jos et halua ottaa koko std -nimiavaruutta käyttöön voit käyttää niitä erikseen aina std::cout ja std::cin
Niin, ja ehkäpä ennemmin iostream kuin iostrem.
Samat viat edelleen. minä käytän Dev-cpp 4.9.9.2:n mukana tulevaa Min-GW gcc kääntäjää! =(
Luulenpa, että nuo tyhjät sulut pitäisi myös poistaa.
Ja tomaattigeenin kommenttiin lisäyksenä, using namespace std;
voidaan korvata myös using std::cin;
-tyyppisillä määrittelyillä.
siis eikö tämä koodi toimi?
#include <iostream> using namespace std; int main() { int luku = 3; cout << luku << endl; return 0; }
Jos ei toimi (eikä tuohon tullut typoa :P), niin vika voi olla idessä, sikkoin kannattaa koittaa kääntää suoraan g++:lla konsolissa.
Kyllä toi nyt sai käännettyä, mutta tuosta puuttuu toi cin - koodi tai niin sanottu olio. Koska tarkoituksenani olisi oppia että kun ohjelmaan syöttää johonkin kenttäään jotain niin se vastaa minulle jotain. Kuten esimerkiksi, miten tällaisen ohjelman voi tehdä, että kun ohjelma avautuu se sanoo moi niin minä vastaan jotain, niin se taas vastaa siihen minun lähettämään vastaukseen jonka syötin siihen komentoriville tai johonkin muuhun kenttään?
Eli voisiko joku opettaa minulle tämän ja selittäis samalla mitä eri koodi merkinnät tarkoittaa ,ja mihin niitä voi myös käyttää. Olisin hyvin kiitollinen tästä tiedosta!
// Tämä rivi liittää mukaan tiedoston "iostream" // Tämä ei ole varsinaista C++:aa vaan esikääntäjän komento. // Siksi siis ei tule puolipistettä. #include <iostream> // Tällä kerrotaan, että käytetään std-nimiavaruuden cin-oliota. // Nyt siis cin tarkoittaa juuri sitä. using std::cin; // Ja sama cout-oliolle. using std::cout; // Tämä rivi aloittaa pääfunktion. // Palautusarvon tyyppi on siis int eli kokonaisluku // Parametreja ei tällä kertaa ole. int main(void) { // Määritellään int- eli kokonaislukutyyppinen muuttuja Luku int Luku; // Tulostetaan tekstiä. // << on stream-olioissa käytetty syöttöoperaattori, // aivan siinä missä yhteenlaskussa on plus (+). // Tekstissä "\n" tarkoittaa rivinvaihtoa. cout << "Anna luku:\n"; // Luetaan käyttäjän syöte muuttujaan Luku. // Jos syöte on muuta kuin numeroita, ei voi tietää, mitä Luku sisältää. cin >> Luku; // cin.good() kertoo, onko olio kunnossa. // Jos syöte oli vaikka väärää tyyppiä, tämä kertoo sen. if (cin.good()) { cout << "Hienoa, annoit luvun " << Luku << ".\n"; } else { cout << "Et osannut edes lukua antaa.\n"; } // Tähän loppuu funktion suoritus. // Normaalisti nolla tarkoittaa, että mitään virhettä ei ole tapahtunut. return 0; }
Siinä pieni esimerkki, kun nyt kerran oli tylsää. Voisi nuo asiat oppaistakin opetella.
Aihe on jo aika vanha, joten et voi enää vastata siihen.