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

Prosze o pomoc klasy, konstruktory itp :|

Ostatnio zmodyfikowano 2012-02-10 00:52
Autor Wiadomość
undervil
Temat założony przez niniejszego użytkownika
Prosze o pomoc klasy, konstruktory itp :|
» 2012-02-09 19:43:27
Witam
dziś miałem poprawkę, niestety nie posżło, chciałbym napisac program który miałem ale nie idzie mi, szukałem już wszedzie, poróbowałem chyba wszystkiego ale nie mogę zrozumieć co jest źle, bo wychodzi na to że zrobiłem zgodnie z zasadami...

Wrzucam zdjęcie całego zadania oraz to co wymodziłem do tej pory...

Jutro mam ostatnią szansę, a szkoda by było 200 zł na warunek :/ yhh

Poniżej treśc i to co zrobiłem...
http://imageshack.us/photo/my-images/835/dsc0203ny.jpg/

C/C++
#include <iostream>
#include <cstdlib>
#include <windows.h>
#include <string.h>
#include <conio.h>
#include <time.h>

using namespace std;

class regal {
protected:
    static int pojemnosc;
    static int polki;
};
int regal::pojemnosc = 50;
int regal::polki = 10;

class biblioteka
    : public regal
{
public:
    int ksiazki;
    int regaly;
    biblioteka( int ksiaz, int reg );
   
    void buduj( int ksiazki, int pojemnosc, int polki )
    {
        int regaly;
        regaly =( ksiazki / 500 + 0.99 );
        cout << regaly << endl;
    }
   
    friend ostream & operator >>( ostream & wejscie, biblioteka & x );
};

biblioteka::biblioteka( int ksiaz = 500, int reg = 1 ) {
    ksiazki = ksiaz;
    regaly = reg;
};


istream operator >>( istream & ksiazki, biblioteka & regaly )
{
   
    cin >> ksiazki;
    cin >> regaly;
   
}




main()
{
    biblioteka library;
    ostream & operator >>( ostream & wejscie, biblioteka & x );
    cout << library.regaly << endl;
    library.regaly = library.ksiazki / 500 + 0.99 )
    cout << library.regaly << endl;
    library.buduj;
   
    system( "pause" );
    return 0;
}
Niestety wiekszośc jest źle... zapomniałem dodać... wywala sporo błędów :(
P-50422
pekfos
» 2012-02-09 20:05:26
Jakich błędów? -.-
P-50425
undervil
Temat założony przez niniejszego użytkownika
» 2012-02-09 20:23:29
Kompilator: Default compiler
Wykonywanie  g++.exe...
g++.exe "F:\Krzysiek\obiektowe\biblioteka klasy.cpp" -o "F:\Krzysiek\obiektowe\biblioteka klasy.exe"    -I"C:\Dev-Cpp\lib\gcc\mingw32\3.4.2\include"  -I"C:\Dev-Cpp\include\c++\3.4.2\backward"  -I"C:\Dev-Cpp\include\c++\3.4.2\mingw32"  -I"C:\Dev-Cpp\include\c++\3.4.2"  -I"C:\Dev-Cpp\include"   -L"C:\Dev-Cpp\lib"
F:\Krzysiek\obiektowe\biblioteka klasy.cpp: In member function `void biblioteka::buduj(int, int, int)':
F:\Krzysiek\obiektowe\biblioteka klasy.cpp:27: warning: converting to `int' from `double'

F:\Krzysiek\obiektowe\biblioteka klasy.cpp: In function `std::istream operator>>(std::istream&, biblioteka&)':

F:\Krzysiek\obiektowe\biblioteka klasy.cpp:43: error: ambiguous overload for 'operator>>' in 'std::cin >> ksiazki'
C:/Dev-Cpp/include/c++/3.4.2/bits/istream.tcc:87: note: candidates are: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT, _Traits>&(*)(std::basic_istream<_CharT, _Traits>&)) [with _CharT = char, _Traits = std::char_traits<char>] <near match>
C:/Dev-Cpp/include/c++/3.4.2/bits/istream.tcc:93: note:                 std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(std::basic_ios<_CharT, _Traits>&(*)(std::basic_ios<_CharT, _Traits>&)) [with _CharT = char, _Traits = std::char_traits<char>] <near match>
C:/Dev-Cpp/include/c++/3.4.2/bits/istream.tcc:102: note:                 std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(std::ios_base&(*)(std::ios_base&)) [with _CharT = char, _Traits = std::char_traits<char>] <near match>
C:/Dev-Cpp/include/c++/3.4.2/bits/istream.tcc:417: note:                 std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(std::basic_streambuf<_CharT, _Traits>*) [with _CharT = char, _Traits = std::char_traits<char>] <near match>
C:/Dev-Cpp/include/c++/3.4.2/istream:692: note:                 std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, signed char*) [with _Traits = std::char_traits<char>] <near match>
C:/Dev-Cpp/include/c++/3.4.2/istream:687: note:                 std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, unsigned char*) [with _Traits = std::char_traits<char>] <near match>

F:\Krzysiek\obiektowe\biblioteka klasy.cpp: In function `int main()':
F:\Krzysiek\obiektowe\biblioteka klasy.cpp:56: warning: converting to `int' from `double'
F:\Krzysiek\obiektowe\biblioteka klasy.cpp:56: error: expected `;' before ')' token
F:\Krzysiek\obiektowe\biblioteka klasy.cpp:58: error: statement cannot resolve address of overloaded function

Wykonanie zakończone



może ktoś by spróbował u siebie to skompilowac albo napisac od podstaw ?

Przydda mi się jakakolwiek pomoc...
P-50431
malan
» 2012-02-09 21:42:24
C/C++
int main()
{
    //...
    ostream & operator >>( ostream & wejscie, biblioteka & x );
    //...
}
Co to tutaj robi?

/edit: Poza tym - ten operator jest chyba źle przeciążony. Powiedz co chcesz osiągnąć, a będzie nam łatwiej Ci pomóc.
P-50443
undervil
Temat założony przez niniejszego użytkownika
» 2012-02-09 21:46:13
dokładnie to co jest w poleceniach na tym zdjęciu:

http://imageshack.us/f/835/dsc0203ny.jpg/



POPRAWIONY KOD:
C/C++
#include <iostream>
#include <cstdlib>
#include <windows.h>
#include <string.h>
#include <conio.h>
#include <time.h>

using namespace std;

class regal {
protected:
    static int pojemnosc;
    static int polki;
};
int regal::pojemnosc = 50;
int regal::polki = 10;

class biblioteka
    : public regal
{
public:
    int ksiazki;
    int regaly;
    biblioteka( int ksiaz, int reg );
   
    void buduj( int ksiazki, int pojemnosc, int polki )
    {
        int regaly;
        regaly =( ksiazki / 500 + 0.99 ) % 10;
        cout << regaly << endl;
    }
   
    friend ostream & operator >>( ostream & ksiazki, biblioteka & regaly );
};

biblioteka::biblioteka( int ksiaz = 500, int reg = 1 ) {
    ksiazki = ksiaz;
    regaly = reg;
};


istream operator >>( istream & ksiazki, biblioteka & regaly )
{
   
    cin >> ksiazki;
    cin >> regaly;
   
}




main()
{
    biblioteka library;
    istream & operator >>( istream & ksiazki, biblioteka & regaly );
    cout << library.regaly << endl;
    library.regaly =( library.ksiazki / 500 + 0.99 );
    cout << library.regaly << endl;
    library.buduj;
   
    system( "pause" );
    return 0;
}
bo zapomniaęłm pozmieniać dane w tym operatorze
P-50444
malan
» 2012-02-09 21:50:07
Przeczytaj uważnie zadanie B, bo zmienną ksiazki masz błędne zadeklarowaną w stosunku do treści zadania. Jeżeli chodzi o operator to: Przeciążanie operatorów w C++.
P-50447
undervil
Temat założony przez niniejszego użytkownika
» 2012-02-09 22:19:55
dzięki za pomoc, gdybym czaił o co chodzi to raczej bym tu nie pisał...
czytałem mase informacji na te tematy i jakoś nie mogę skumać co jest źle dlatego napisałem post... :|

zrobione przez znajomego:
C/C++
#include <iostream>
#include <cstdlib>
#include <windows.h>
#include <string.h>
#include <conio.h>
#include <time.h>
#include <cmath>

using namespace std;

class regal {
protected:
    static int pojemnosc;
    static int polki;
};

int regal::pojemnosc = 50;
int regal::polki = 10;

class biblioteka
    : regal
{
private:
    int ksiazki;
public:
    int regaly;
    biblioteka( int ksiazki = 500, int regaly = 1 ) {
        this->ksiazki = ksiazki;
        this->regaly = regaly;
    }
    void buduj( int regaly ) {
        this->regaly = regaly;
    }
    void setKsiazki( int ksiazki ) {
        this->ksiazki = ksiazki;
    }
    int getIloscPotrzebnaRegalow() {
        float iloscPotrzebnaRegalow = 0;
        float iloscKsiazekNaRegale = 0;
        iloscKsiazekNaRegale = this->getIloscKsiazekNaRegale();
        iloscPotrzebnaRegalow =( float ) ksiazki / iloscKsiazekNaRegale;
        return( int ) ceil( iloscPotrzebnaRegalow );
    }
private:
    friend istream & operator >>( istream & wejscie, const biblioteka & b );
    float getIloscKsiazekNaRegale() {
        return this->pojemnosc * this->polki;
    }
};

istream & operator >>( istream & wejscie, biblioteka & b ) {
    int k;
    cout << "Podaj ilosc ksiazek:" << endl;
    wejscie >> k;
    b.setKsiazki( k );
    cout << "Podaj ilosc regalow:" << endl;
    wejscie >> b.regaly;
    return wejscie;
}

int main()
{
    int iloscPotrzebnaRegalow = 0;
    biblioteka library;
    cin >> library;
    cout << "Ilosc regalow to: " << library.regaly << endl;
    iloscPotrzebnaRegalow = library.getIloscPotrzebnaRegalow();
    cout << "Potrzebna ilosc regalow to: " << iloscPotrzebnaRegalow << endl;
    int regaly = iloscPotrzebnaRegalow;
    if( iloscPotrzebnaRegalow > library.regaly )
    {
        library.buduj( regaly );
    }
    else
         library.buduj( regaly );
   
    cout << "regaly : " << library.regaly;
    getch();
    return 0;
}
P-50450
malan
» 2012-02-10 00:52:27
W metodach klasy biblioteka
this
 jest niepotrzebny. No i nie ma to jak mieszać polski z angielskim w nazewnictwie metod :)
Temat zamknięty rozumiem? :)
P-50456
« 1 »
  Strona 1 z 1