Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Koulutehtävä: Tulostusluokka

kayttaja-12009 [13.01.2013 21:58:00]

#

En tiedä mikä seuraavassa on vialla, voiko joku auttaa. Tässä tehtävä:

Tehtävä kirjoitti:

Alla oleva ohjelma luo luokkaan Tulostusluokka pohjautuvan olion nimeltään tulostaja ja käyttää sen jälkeen tuota oliota tekstin tulostamiseen.

Sinun tehtävänäsi on kirjoittaa luokka Tulostusluokka ja siihen metodi tulostusta varten (alla olevaa koodia ei siis tarvitse kopioida palautuskenttään).

#include <iostream>
#include <string>
using namespace std;

// sinun koodisi tulee tähän


int main()
{
  char merkkijono[50];
  cout << "Anna merkkijono, jonka tulostan:";
  cin.get(merkkijono, 50);
  Tulostusluokka tulostaja;
  tulostaja.Tulosta(merkkijono);
}

Esimerkkitulostus

Anna merkkijono, jonka tulostan:esimerkkituloste
esimerkkituloste

Olen saanut väännettyä tälläisen:

class Tulostusluokka
{
public:

char merkkijono[50];
void Tulosta(char merkkijono[]);

void Tulostusluokka::Tulosta(char merkkijono[])

cout << merkkijono << endl;
}

Mod. korjasi kaikenlaiset muotoilut!

Ripe [13.01.2013 22:08:17]

#

Eikö olisi parempi käyttää c++:n string-tietotyyppiä, kun se kerta includetetaan koodiin. Tulostusluokka::Tulosta määrittelee luokkaasi metodin, mutta se pitäisi silloin tehdä luokan ulkopuolella. Koodista puuttuu muutenkin aaltosulkuja.

cout << merkkijono << endl;

tuo ei ole nyt milläänlailla metodissa, joten ei varmasti toimi. Näin toimii:

#include <iostream>
#include <string>

using namespace std;

class Tulostusluokka {
	public:
	void Tulosta(string tulostettava){
		cout << tulostettava << endl;
	}
};

int main(){
	string merkkijono;
	cout << "Anna merkkijono:";
	getline(cin, merkkijono);
	Tulostusluokka tulostaja;
	tulostaja.Tulosta(merkkijono);
}

EDIT: Lisätty selityksiä, miksei koodi toimi

Tai sitten käyttämällä selityksessäsi esiteltyä main funktiota:

class Tulostusluokka {
	public:
	void Tulosta(char* tulostettava){
		cout << tulostettava << endl;
	}
};

kayttaja-12009 [14.01.2013 12:05:56]

#

Kiitos Ripe, tää koko Olio-juttu menee mulle vielä yli ymmärryksen. Ehkä on parempi lukea lisää jos jostain löytyisi hyvää materiaalia.

jlaire [14.01.2013 12:25:54]

#

kayttaja-12009 kirjoitti:

Kiitos Ripe, tää koko Olio-juttu menee mulle vielä yli ymmärryksen.

Ei haittaa yhtään, jos tuo esimerkki menee yli tai ohi. Se on todella huono. Siinä tehdään yksinkertaisen asia monimutkaisella tavalla pelkästään siksi, että saadaan väkisin tungettua luokka johonkin väliin. :(

Ripe [14.01.2013 12:25:55]

#

Oliot ovat itse asiassa aika helppo ymmärtää, tosin olen itsekin ohjelmoinut vasta pari vuotta. Kun osaa ohjelmoida yhdellä kielellä, osaa yleensä muidenkin kielien perusasiat, sillä ne ovat melko samanlaisia kaikissa kielissä. Mielestäni oliot ovat todella hyödyllisiä, sillä niiden avulla voi tavallaan paketoida koodia ja saada sitä parempaan järjestykseen. Onnea vaan opiskeluun

JaskaP [15.01.2013 01:20:31]

#

Suosittelen että opettelet ensin helposti tajuttavan tietueen vaikka täältä.

Sitten vain lisäät funktiota tietueen sisään tähän tyyliin ja hoplaa, osaat olio-ohjelmointia!

Toki olio-ohjelmointiin kuuluu paljon muutakin, mutta tuo on ensimmäinen askel ja nähdäkseni paras tapa ymmärtää oliohomma.

Luokka tosiaan kannattaa hahmottaa (C-kielen) tietueena, jota on laajennettu funktioilla. Ei se OO:n perusidea sen monimutkaisempi ole.

kayttaja-12009 [15.01.2013 15:43:06]

#

Kiitos vastauksista ja linkeistä. Näillä pitäis päästä jo jyville, ehkä parempi jos vain kokeilen ohjelmoida vapaa-ajalla kans. Tajuan ettei ohjelmointia välttämättä ymmärrä niin hyvin pelkästään lukemalla (ainakaan omalla kohdallani), tekemällä oppii paljon paremmin.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta