Wskaźniki z tablicami i odwracanie tablic.
Ostatnio zmodyfikowano 2018-12-03 00:31
tomekrx Temat założony przez niniejszego użytkownika |
Wskaźniki z tablicami i odwracanie tablic. » 2018-12-02 21:36:37 Witam, mam problem z pewnym "prostym" programem, natomiast dostałem w szkole do napisania program w którym za pomocą funkcji z wskaźnikiem "int *f(int rozmiar, int *tab)" użytkownik wpisuje liczbę, która jest rozmiarem tablicy i program losuje losowe liczby które zostają wpisywane do tablicy a następnie wyświetlane w konsoli. I tutaj zaczyna się mój problem napisałem prostą funkcje: int * f( int rozmiar, int * tab ) { tab = new int[ rozmiar ]; for( int i = 0; i < rozmiar - 1; i++ ) { tab[ i ] = rand() % 100 + 1; } return tab; } Tylko nie wiem jak ją wywołać, bo samo int m; cin >> m; cout << f( m, n ); nie działa, ale nie widzę sensu wpisywania do tego zmiennej n, gdyż "robi" się ona za pomocą zmiennej m. Dodam, że jeżeli umieszczę taki wpis bezpośrednio do main'a to program się odpali i działa dobrze. Póki co to jedyna rzecz z którą mam problem, wydaje mi się, że jeżeli to ogarnę to z odwróceniem funkcji nie będzie problemu. |
|
pekfos |
» 2018-12-02 21:59:34 int * tab = f( rozmiar, 0 );
Drugi argument nic nie robi, więc można podać tam cokolwiek, np 0. |
|
tomekrx Temat założony przez niniejszego użytkownika |
» 2018-12-02 22:58:01 Faktycznie! Nie wpadłem na to. A teraz znalazłem, że do odwrócenia tablicy jest funkcja : void reverse( int * tab1, int rozmiar1 ) { int temp; for( int i = 0; i < rozmiar1 / 2; i++ ) { tab1[ rozmiar1 - i - 1 ] = tab1[ i ]; temp = tab1[ rozmiar1 - i - 1 ]; tab1[ i ] = temp; cout << tab1[ i ]; } } i zapisałem: int main() { int m; cout << "Wpisz rozmiar tablicy i ilość elementow znajdujacych sie w niej: "; cin >> m; f( m, 0 ); reverse( 0, m ); } funkcja f(m,0) działa poprawnie, ale reverse nie chce się w ogóle kompilować "niedozwolony operator pośredni", |
|
pekfos |
» 2018-12-03 00:01:21 Funkcja reverse() jest niepoprawna i ją niepoprawnie wywołujesz, ale kompilować się akurat powinna. Podaj dokładną treść błędu i najlepiej nie po polsku. |
|
tomekrx Temat założony przez niniejszego użytkownika |
» 2018-12-03 00:31:13 int *f(int rozmiar, int *tab) { tab = new int[rozmiar]; srand(time(NULL)); for (int i = 0; i < rozmiar; i++) { tab = rand() % 100 + 1; cout << tab << endl; } cout << endl << endl << endl; reverse(tab, tab + rozmiar); for (int i = 0; i < rozmiar; i++) { cout << tab << endl; }
return tab; }
int main() { int m; cout << "Wpisz rozmiar tablicy i ilość elementow znajdujacych sie w niej: "; cin >> m; f(m, 0);
} Jakoś się udało i nawet działa, tylko jak chcę zwolnić pamięć funkcją delete[] to co powinienem wpisać po nawiasie? |
|
« 1 » |