Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Suorakaiteen väärät arvot (C++)

robinHood [30.12.2003 18:53:28]

#

Käytössä DevC++ ja pitäisi olla suoraan(lyhennetty pätkä) Jesse Libertyn kirjasta, mutta getArea muodostin antaa väärät arvot. Kertokaas gurut alottelijalle syy.

#include <iostream.h>

class Rectangle
 {
 public:
  Rectangle (int top, int left, int bottom, int right);
  ~Rectangle () {}

  int GetArea() const;

 private:

  int itsTop;
  int itsLeft;
  int itsBottom;
  int itsRight;
  };

Rectangle::Rectangle(int top, int left, int bottom, int right)
{
int itsTop = top;
int itsLeft = left;
int itsBottom = bottom;
int itsRight = right;
cout << itsLeft <<"\n";  // Tässä vaiheessa itsLeft ok.

}

int Rectangle::GetArea() const
{

int Width = itsRight - itsLeft;
int Height = itsTop - itsBottom;
cout << itsLeft <<"\n";  // Tässä vaiheessa itsLeft pielessä.
return (Width*Height);
}

int main()
{
//char merkki;
Rectangle MyRectangle(100, 20, 50, 80);
int Area = MyRectangle.GetArea();

cout << "Area: " << Area << "\n";

//cin >> merkki;
return 0;
}

remontti-reiska [30.12.2003 23:26:21]

#

lainaus:

//char merkki;
Rectangle MyRectangle(100, 20, 50, 80);
int Area = MyRectangle.GetArea();

cout << "Area: " << Area << "\n";

//cin >> merkki;

Miksi charin ja cinnin edessä on 2 kauttaviivaa? Ne voisi ottaa pois sillä se voi muuttaa ne (kait) kommentoinniksi.

robinHood [31.12.2003 10:37:13]

#

[/lainaus]

Miksi charin ja cinnin edessä on 2 kauttaviivaa? Ne voisi ottaa pois sillä se voi muuttaa ne (kait) kommentoinniksi.

[/lainaus]

Kommenteiksi ne onkin tarkoitettu. Omissa kokeiluissa taas käytössä. Ei pitäisi vaikuttaa itse asiaan. Mutta pääpointti on miksi GetArea funktio antaa vääriä arvoja. Pitäiskö tuossa olla vielä kuitenkin SetArea tms.

Ei muuten olekaan aivan suoraan J.L:n kirjasta vaan omaa juttua sovellettuna em. kirjasta.

remontti-reiska [31.12.2003 13:36:04]

#

Kannattaa käyttää lainaus juttua..hihhih :D.

Gathaja [31.12.2003 14:16:45]

#

Sinä luot nyt uudet muuttujat muodostin funktiossa joten muutat niiden arvoja etkä oikeita jäsenmuuttujia. Muodostinfunktion pitäisi mennä näin (elikkä int:it pois):

Rectangle::Rectangle(int top, int left, int bottom, int right)
{
itsTop = top;
itsLeft = left;
itsBottom = bottom;
itsRight = right;
cout << itsLeft <<"\n"; // Tässä vaiheessa itsLeft ok.

}

Nyt ne viittavaat jäsenmuuttujiin.

robinHood [31.12.2003 15:12:47]

#

Kiitos.
Tuli mieleen, että ei taida maailmasta löytyä montaa lukihäiriöistä C++ koodaajaa.

Vastaus

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

Tietoa sivustosta