Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Program do liczenia pola prostokata i dziwne śmieci na wyniku

Ostatnio zmodyfikowano 2013-12-05 19:06
Autor Wiadomość
lewozmywak
Temat założony przez niniejszego użytkownika
Program do liczenia pola prostokata i dziwne śmieci na wyniku
» 2013-12-03 19:30:18
C/C++
#include <iostream>
#include <cstdlib>
using namespace std;

class Prostokat
{
private:
    int dlugosc_boka_a;
    int dlugosc_boku_b;
public:
    int getBokA();
    int getBokB();
    int setBokA( int dlugosc_boka_a );
    int setBokB( int dlugosc_boku_b );
    int wyliczPole();
};

int Prostokat::getBokA()
{
    return dlugosc_boka_a;
}

int Prostokat::getBokB()
{
    return dlugosc_boku_b;
}

int Prostokat::setBokA( int dlugosc_boku_a )
{
    Prostokat::dlugosc_boka_a = dlugosc_boka_a;
}

int Prostokat::setBokB( int dlugosc_boku_b )
{
    Prostokat::dlugosc_boku_b = dlugosc_boku_b;
}

int Prostokat::wyliczPole()
{
    return dlugosc_boka_a * dlugosc_boku_b;
}

int main()
{
    cout << "Podaj bok a i b" << endl;
    int bok1 = 0;
   
    int bok2 = 0;
   
    Prostokat p;
    cin >> bok1;
    cin >> bok2;
   
    p.setBokA( bok1 );
    p.setBokB( bok2 );
   
    cout << "Pole Prostokata wynosi " << p.wyliczPole() << endl;
   
    return 0;
}

Jest to ćwiczenie z moich zajęć... nie wiem co tu nie gra... zrobiłem to dokładnie według metod jakie nam pokazywał ćwiczeniowiec... dopiero wchodze w obiektówke i nie radze się za bardzo... co tu nie gra że mam dziwne wyniki?
P-98184
R3V0
» 2013-12-03 19:39:51
Najprawdopodobniej problemem są długie nazwy zmiennych bądź zmienne bok1 i bok2

ja to poprawiłem na coś takiego i działa
C/C++
#include <iostream>
#include <cstdlib>
using namespace std;


class Prostokat
{
private:
    int a;
    int b;
public:
    int getBokA();
    int getBokB();
    void setBokA( int a );
    void setBokB( int b );
    int wyliczPole();
};

int Prostokat::getBokA()
{
    return a;
}

int Prostokat::getBokB()
{
    return b;
}

void Prostokat::setBokA( int a )
{
    this->a = a;
}

void Prostokat::setBokB( int b )
{
    this->b = b;
}

int Prostokat::wyliczPole()
{
    int pole;
    pole = a * b;
    return pole;
}

int main()
{
    int a;
    int b;
    Prostokat p;
   
    cout << "Podaj bok a: " << endl;
    cin >> a;
    cout << "Podaj bok b: " << endl;
    cin >> b;
   
    p.setBokA( a );
    p.setBokB( b );
   
    cout << "Pole Prostokata wynosi " << p.wyliczPole() << endl;
   
    return 0;
}
P-98187
pekfos
» 2013-12-03 19:44:29
C/C++
int Prostokat::setBokA( int dlugosc_boku_a )
{
    Prostokat::dlugosc_boka_a = dlugosc_boka_a;
}
Problemem jest literówka w nazwie.
P-98188
R3V0
» 2013-12-03 19:49:29
zbyt długie nazwy zmiennych ustaliłeś sobie. skoro zaczynasz zabawę i chcesz wiedzieć do czego dana zmienna jest, używaj komentarzy
int a; //pierwszy bok prostokąta

aby sprawnie pisać obszerne programy upraszczaj zmienne. bynajmniej jak tak robię i mi to ułatwia życie :)
P-98190
pekfos
» 2013-12-03 19:58:03
aby sprawnie pisać obszerne programy upraszczaj zmienne. bynajmniej jak tak robię i mi to ułatwia życie :)
A za miesiąc "Wtf, od czego jest ta zmienna?!". Nazwy zmiennych zostaw w spokoju, mogą być (prawie) dowolne. Jeśli już się tego czepiać, to tylko dawania takich samych nazw argumentów i składowych. Przez to literówka nie została uznana przez kompilator za błąd, a już program nie działa.

PS: Jak metoda nic nie zwraca, ustaw typ zwracany na void. W przeciwnym wypadku niezwrócenie wartości ma niezdefiniowane zachowanie.
PS2: "bynajmniej" nie oznacza "przynajmniej".
P-98192
R3V0
» 2013-12-03 20:00:30
ja używam komentarzy przy deklaracji zmiennej i nie mam problemu z odczytaniem jej przeznaczenia po miesiącu czy nawet roku ;) a o tym void miałem też dopisać ale jestem lekko rozkojarzony bo pracuję nad swoim programikiem :)

PS. doczytałem znaczenie ;) dziękuję za informację :)
P-98194
lewozmywak
Temat założony przez niniejszego użytkownika
» 2013-12-05 19:06:26
wielkie dzięki za pomoc... fakt przy wklepywaniu długich nazw z klawiatury łatwo zrobić babola, a trudno później znaleźć taki błąd...
P-98453
« 1 »
  Strona 1 z 1