Wskaźniki z tablicami i odwracanie tablic.
Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Zarejestruj się!

Wskaźniki z tablicami i odwracanie tablic.

AutorWiadomość
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:
C/C++
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
C/C++
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.
P-173075
» 2018-12-02 21:59:34
C/C++
int * tab = f( rozmiar, 0 );
Drugi argument nic nie robi, więc można podać tam cokolwiek, np 0.
P-173077
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 :
C/C++
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:
C/C++
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",
P-173078
» 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.
P-173081
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?
P-173083
« 1 »
 Strona 1 z 1