LyanVu Opublikowano 2 Kwietnia 2014 Udostępnij Opublikowano 2 Kwietnia 2014 Witam, mam mały/duży problem, ponieważ nie dawno co uczyłem się wskaźników i postanowiłem je przećwiczyć. Najpierw pokażę kod: Klasy.h: class cIntArray { private: const static short unsigned int mDOMYSLNY = 5; unsigned mRozmiar; int* mpTablica = NULL; public: cIntArray() { mRozmiar = mDOMYSLNY; } cIntArray(unsigned Rozmiar) { mRozmiar = Rozmiar; mpTablica = new int[mRozmiar]; } ~cIntArray() { delete[] mpTablica; } bool SetWartosc(int wartosc, int indeks); unsigned GetRozmiar() const { return mRozmiar; } unsigned GetDane(unsigned Indeks) const { return mpTablica[indeks]; } bool SetRozmiar(int NowyRozmiar); }; Main.cpp(wiem, że implementacje lepiej w oddzielnym module ale to tylko krótkie ćwiczenie): #include <iostream> #include <conio.h> #include <memory.h> #include "Klasy.h" using namespace std; bool cIntArray::SetWartosc(int wartosc, int indeks) { if (indeks > mRozmiar || indeks < 0) return false; mpTablica[indeks] = wartosc; return true; } bool cIntArray::SetRozmiar(int NowyRozmiar) { if (NowyRozmiar == mRozmiar) return false; int* pNowaTablica = new int[NowyRozmiar]; memcpy(pNowaTablica, mpTablica, NowyRozmiar * sizeof(int)); delete[] mpTablica; mpTablica = pNowaTablica; mRozmiar = NowyRozmiar; return true; } int main() { cout << "Podaj Rozmiar Tablicy: "; int nRozmiar; cin >> nRozmiar; cIntArray* pIntTablica = new cIntArray(nRozmiar); cout << endl << pIntTablica->GetRozmiar(); _getch(); int nIndeks, nWartosc; cout << endl << "Podaj Indeks: "; cin >> nIndeks; cout << endl << "Podaj Wartosc: "; cin >> nWartosc; cout << endl << pIntTablica->GetDane(nIndeks); _getch(); system("cls"); cout << "Podaj Indeks do sprawdzenia: "; cin >> nIndeks; cout << endl << pIntTablica->GetDane(nIndeks); _getch(); cout << endl << "Podaj Nowy Rozmiar: "; cin >> nRozmiar; pIntTablica->SetRozmiar(nRozmiar); cout << endl << "Dane o tamtym indeksie: "; cout << pIntTablica->GetDane(nIndeks); delete pIntTablica; _getch(); return 0; } A problem jest taki, iż za każdym razem niezależnie jaką wartość wpiszę to jest tam liczba iluś cyfrowa(6 może 7) i przy każdym uruchomieniu programu jest taka sama -.-. Co się dzieje? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 2 Kwietnia 2014 Udostępnij Opublikowano 2 Kwietnia 2014 Główny problem, przez który Twój kod nie działa to: Nie ustalasz wartości w tablicy, z tego co widzę nie używasz (nigdzie) metody cIntArray::SetWartosc. Ale zauważyłem kilka niedociągnięć... Domyślny konstruktor nie tworzy tablicy intów, mimo że mDOMYSLNY jest równy 5. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LyanVu Opublikowano 2 Kwietnia 2014 Autor Udostępnij Opublikowano 2 Kwietnia 2014 Wow... hahah.. Jak ja mogłem to przeoczyć -.- No ale dziękuję :) A, że nie tworzę domyślnego to wiem, bo byłem w środku tworzenia programu, więc miałem go zamiar użyć ;p Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Czarny Ass Opublikowano 2 Kwietnia 2014 Udostępnij Opublikowano 2 Kwietnia 2014 W ogóle co to za nazewnictwo? Albo UstawWartosc, albo SetValue, albo UstawRozmiar, albo SetSize. Polsko-angielskie nazwy naprawdę ciężko będzie Ci ogarnąć, więc lepiej konsekwentnie nazywaj, po polsku, albo po angielsku. ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się