Ależ tu nic nie jest dobrze. Po pierwsze nie dałeś kodu który się kompiluje, więc nawet jak coś nie da się sprawdzić co jest nie tak...
Więc zacznijmy od początku.
Brak include'ow:
Kopiuj
#include <iostream>
Następnie, zdecyduj czy chcesz używać pełnych nazw std::count
, czy dodasz linijkę:
Kopiuj
using namespace std;
Dopiero wtedy zaczyna się kompilować.
Zatem przejdźmy do błędów jakie masz w kodzie:
Kopiuj
int *tablica;
int *wskaznik = tablica;
tablica = new int [ile];
Masz użycie niezainicjowanego wskaźnika tablica
podstawiając go pod wskaźnik wskaznik
. Następnie dopiero alokujesz pamięć za pomocą new. Powinno być odwrotnie.
Aby się przed tym zabezpieczyć warto wskaźniki inicjować w ten sposób:
Kopiuj
int *tablica = NULL;
int *wskaznik = NULL;
W tym fragmencie kodu jakim celu zwiększasz wskaźnik
nie robiąc zupełnie nic z nim?
Kopiuj
for(int i=0; i<ile; i++)
{
cout<<"Podaj liczbe: ";
cin>>liczba;
*tablica = liczba;
*wskaznik++;
}
Tutaj natomiast popatrz, że po przebiegu pętli wcześniejszej wskaźnik ustawiony jest na pierwszy element poza tablicą, więc dalsze jego zwiększanie powoduje wypisywanie danych spoza tablicy, czyli śmieci.
Kopiuj
for(int i=0; i<ile; i++)
{
cout<<*tablica<<endl;
*wskaznik++;
}
Na koniec nie zwalniasz pamięci wcześniej przydzielonej.
PS. na forum programistycznym określenie "nie działa" nie jest zbyt fajnym opisem problemu ;)
"z tego co wiem to żeby wskazać na coś trzeba użyć znaczka &"
no nie... To co napisałeś się nie skompiluje.pavarotti&wskaznik
, popraw mnie jeśli się mylę ;p tak jak pisałem, nie korzystam z C++