Ostatnio zacząłem bawić się z używaniem obiektów dynamicznych typu new i new[]. Pisze sobie teraz programy uzywając dynamicznych tablic new[]. Działanie programu jest proste: na początku pyta się jak duża ma być tablica, i przypisuje do niej podana wartość. Do takiej tablicy moge odnosić siętylko za pomocą wskaźników. Dalej tworzyłem pętle która przypisywała jakieś tam wartości do wszystkich elementów tej tablicy przez wskaźnik. Wszystko szło jak z płatka do czasu jak nie zacząłem martwić się jak przejść, po tym przypisywaniu wartości do jej pierwszego, zerowego elementu ? Nie moge przecież normalnie nastawić wskaźnika aby pokazywał teraz na zerowy element bo mogę się do tablicy odnosić tylko, właśnie poprzez ten wskaźnik, a to nie działa: wsk = wsk[0] ? Wiem, że to napisałem trochę niejasno więc daje tu kod źródłowy
KOMPILATOR Dev-Cpp 4.9.9.2 //[g++ przyp. q]
/*Do przelicznika test.cpp*/
#include <iostream>
#include <string>
using namespace std;
/****************************************************************************/
int main()
{
cout<<"Ile chcesz wykonac obliczen: ";
int rozmiar;
cin>>rozmiar;
cin.ignore();
int *wsk_roz = new int [rozmiar]; //wskaźnik pomocniczy dla pętli
int *a, *b, *c, *d; //definicja czterech wskaźników int
//przypisanie ich do tablic new[]
a = new int [rozmiar];
cout<<"*a = "<<*a<<endl;
b = new int [rozmiar];
cout<<"*b = "<<*b<<endl;
c = new int [rozmiar];
cout<<"*c = "<<*c<<endl;
d = new int [rozmiar];
cout<<"*d = "<<*d<<endl;
//.
for(int i = 0; i < rozmiar; ++i, ++a, ++b, ++c, ++d)
{
cout<<"\nPodaj zapis ("<< i + 1<<" / "<<rozmiar<<")"<<" : ";
cin>>*a>>*b>>*c>>*d; //przypisanie wskaźnikom konkretnych, podanych wartości
cin.ignore();
//Pomiar I
cout<<"POMIAR I"<<endl;
cout<<"*a = "<<*a<<endl;
cout<<"*b = "<<*b<<endl;
cout<<"*c = "<<*c<<endl;
cout<<"*d = "<<*d<<endl;
/* NIEWAŻNE LINIJKI
cin>>aa>>bb>>cc>>dd;
cin.ignore();
*a = aa;
cout<<"*a = "<<*a<<endl;
*b = bb;
*c = cc;
*d = dd;
*/
}
/* NIEWAŻNE LINIJKI
cout<<"aa = "<<aa<<endl;
cout<<"bb = "<<bb<<endl;
cout<<"cc = "<<cc<<endl;
cout<<"dd = "<<dd<<endl;
*/
// POMIAR II
// wskaźniki wskazuja tu już na ostatnie wartości
cout<<"POMIAR II"<<endl;
cout<<"*a = "<<*a<<endl;
cout<<"*b = "<<*b<<endl;
cout<<"*c = "<<*c<<endl;
cout<<"*d = "<<*d<<endl;
cout<<"\nOto zapisane tablice: "<<endl;
cout<<a[0]<<endl; //to też nie działa...!!!
cout<<a[1]<<endl;
for( int i = 0; i < rozmiar; ++i, a++, b++, c++, d++)
{
cout<<"a ["<< i<<"] = "<< *a <<endl;
cout<<"b ["<< i<<"] = "<< *b <<endl;
cout<<"c ["<< i<<"] = "<< *c <<endl;
cout<<"d ["<< i<<"] = "<< *d <<endl;
}
cout<<"\nA oto zapisane ciagi binarne: "<<endl;
for( int i = 0; i < rozmiar; ++i)
{
cout<< i + 1<<" = "<<a[i]<<" "<<b[i]<<" "<<c[i]<<" "<<d[i]<<endl; //dziwna sprawa bo dla wskaźnika d nie działa
}
cout<<"\nUsuwam tablice..."<<endl;
delete [] a;
delete [] b;
delete [] c;
delete [] d;
delete [] wsk_roz;
cout<<"\nAby zakonczyc dzialanie programu nacisnij Enter"<<endl;
getchar();
return 0;
}