Skocz do zawartości

Ćwiczenia na wskaźnikach(opakowane w klasę)


LyanVu

Rekomendowane odpowiedzi

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

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

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...