c++ Tablica Klasa

c++ Tablica Klasa
PN
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 10 lat
  • Postów:19
0

Witam mam napisać Klasę która zawiera składnik tab - wskaźnik na liczbę typu int oraz metody:
Utwoz - parametr typu int tworzy tablicę i elementów
dodajNowy - parametr typu double - dodaje nowy element do tablicy (na końcu)
element - parametr typu int - zwraca element o podanym indeksie
usuń - parametr typu int - usuwa element o podanym indeksie

Mój program wygląda następująco:

Kopiuj
class Tablica {  
public:
	int* tab;
	void utworz();
	void dodajNowy();
	int element();
	void usun();
};
void Tablica::utworz(){
	int p;
	cout<< "podaj wielkosc tablicy"<<endl;
	cin>>p;
	tab = new int [p];
}
void Tablica::dodajNowy(){
	double a;
	cout<< "podaj liczbe: "<<endl;
	cin>> a;
	for (int i=0;i<sizeof(tab);i++)
	if (tab[i]=='/0'){	
	tab[i]=a;
	continue;
	}
}
int Tablica::element(){
	int tmp;
cout<<"podaj indeks: "<<endl;
cin>> tmp;
return tab[tmp];	
}
void Tablica::usun(){
	int tmp;
	cout<<"podaj indeks do usuniecia: "<<endl;
	cin>>tmp;
	for(int i = tmp; i < sizeof(tab); i++) tab[i] = tab[i + 1];
  tab[sizeof tab] = 0;

}
int main(){
	Tablica p;
	p.utworz();
	p.dodajNowy();
	p.dodajNowy();
	cout<< p.element();
	
	system("PAUSE");
} 

nie wiem czy zrobiłem dobrze dodawanie elementu ponieważ jeśli chcę wyświetlić element o np 1 indeksie nie wyświetla mi się prawidłowo proszę o pomoc

fasadin
  • Rejestracja:prawie 14 lat
  • Ostatnio:prawie 3 lata
  • Postów:4882
0
Kopiuj
if (tab[i]=='/0'){    
    tab[i]=a;
    continue;
    }

ten fragment kodu nie ma sensu skad wiesz ze tablica bedzie sie tym znakiem konczyc? jezeli nie ma zadnego elementu? Nie wiesz bo sa tam randomowe liczby(tak randomowe)

co musisz zrobic to przechowywac ostatni_index (ktory zainicializujesz zerem) i pozniej go powiekszac. Jezeli dodajesz nowy to po prostu robisz
ostatni_index++;

Kopiuj
if(ostatni_index < wielkosc_tablicy) 
{
    tab[ostatni_index] = element;
}

formatuj rowniez kod bo wyglada zle

edytowany 1x, ostatnio: fasadin
PN
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 10 lat
  • Postów:19
0

Oki zrobione a jeśli chodzi o "utworz" mam tam

Kopiuj
	tab = new int [p]; 

ale to tylko przydziela pamięć a ja chce żeby w tym ustawiać wielkość tablicy jak to zrobić ?

fasadin
  • Rejestracja:prawie 14 lat
  • Ostatnio:prawie 3 lata
  • Postów:4882
0

przydzielasz tablice o rozmiarze P (rozmiar! [rozmiar]). Wiec Twoje P to rozmiar tablicy. Przydziela pamiec o rozmiarze int * p

edytowany 1x, ostatnio: fasadin

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.