ďťż

Ładny brzuch

Witam

Mam taką oto klasę:
class liczba { public: liczba(int sz, string lz, int sd); ~liczba(); int wez_system_z() const; string wez_liczbe_z() const; int wez_system_d() const; private: int system_z; string liczba_z; int system_d; }; liczba::liczba(int sz, string lz, int sd) { system_z= sz; liczba_z= lz; system_d= sd; } liczba::~liczba(){} int liczba::wez_system_z() const { return system_z; } string liczba::wez_liczbe_z() const { return liczba_z; } int liczba::wez_system_d() const { return system_d; }
Próbuję zwrócić jej obiekt w następujący sposób:
liczba ret(system_z, liczba_z, system_d); return ret;
Kiedy program dochodzi do tej linijki, wykonuje jedną z wcześniejszych operacji kilkakrotnie (ta operacja nie ma prawa się powtóryć!), aż spowoduje błąd. Wygląda na to, jakby program przeskakiwał kilka linijek wykonania w górę. Co tak naprawdę jest źle, jak temu zaradzić?

Z góry dzięki,
MZet.



Pokarz cały kod bo nie za bardzo wiadomo co to za błąd.

Czekaj, dam jutro :)

Oto kod:
// plik input.cpp #pragma warning (disable: 4530) #include <ios> #include <iostream> #include <limits> #include <string> using namespace std; class liczba { public: liczba(int sz, string lz, int sd); ~liczba(); int wez_system_z() const; string wez_liczbe_z() const; int wez_system_d() const; private: int system_z; string liczba_z; int system_d; }; liczba::liczba(int sz, string lz, int sd) { system_z= sz; liczba_z= lz; system_d= sd; } liczba::~liczba(){} int liczba::wez_system_z() const { return system_z; } string liczba::wez_liczbe_z() const { return liczba_z; } int liczba::wez_system_d() const { return system_d; } void wprowadz() { int system_z; int system_d; string liczba_wpi= ""; string liczba_z= ""; string niepotrzebne= ""; string::iterator i; system("cls"); cout << "Podaj podstawŠ systemu liczbowego liczby Ťr˘dˆowej: [2-16] "; cin >> system_z; if(!cin) { cin.clear(); cin.ignore(numeric_limits<streamsize>::max(), '\n'); cout << "System liczbowy musi by† 2-16.\n"; system("pause"); wprowadz(); } if( (system_z<2) || (system_z>16) ) { cout << "\nSystem liczbowy musi by† 2-16.\n"; system("pause"); wprowadz(); } getline(cin, niepotrzebne); cout << "Podaj liczbŠ Ťr˘dˆowĽ: "; getline(cin, liczba_wpi); for(i=liczba_wpi.begin();i!=liczba_wpi.end();i++) { int conv= *i - '0'; //cout << "\n\n" << conv << "\n\n"; int upper= toupper( (int)*i ); //cout << "\n\n" << upper << "\n\n"; if( conv<system_z ) { liczba_z= liczba_z + (*i); //cout << "\n\n" << liczba_z << "\n\n"; } else if( (upper>=55) && (upper<=70) ) { if( ((upper-55)<system_z) ) { liczba_z= liczba_z + (*i); cout << "\n\n" << liczba_z << "\n\n"; } else { cout << "Liczba, kt˘rĽ podaˆe˜, ma cyfry niemieszczĽce siŠ w żĽdanym systemie liczbowym.\n\n"; system("pause"); wprowadz(); } } else { cout << "Liczba, kt˘rĽ podaˆe˜, ma cyfry niemieszczĽce siŠ w żĽdanym systemie liczbowym.\n\n"; system("pause"); wprowadz(); } } cout << "Podaj podstawŠ systemu liczbowego liczby docelowej: [2-16] "; cin >> system_d; //cout << "\n\n" << system_d << "\n\n"; if(!cin) { cin.clear(); cin.ignore(numeric_limits<streamsize>::max(), '\n'); cout << "System liczbowy musi by† 2-16.\n"; system("pause"); wprowadz(); } if( (system_d<2) || (system_d>16) ) { cout << "\nSystem liczbowy musi by† 2-16.\n"; system("pause"); wprowadz(); } //liczba ret(system_z, liczba_z, system_d); //return ret; }

// plik input.h #ifndef INPUT_H_INCLUDED #define INPUT_H_INCLUDED class liczba {}; void wprowadz(); #endif // INPUT_H_INCLUDED

// plik main.cpp #include "input.h" int main() { wprowadz(); return 0; }

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •