Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wskaźniki z tablicami i odwracanie tablic.

Ostatnio zmodyfikowano 2018-12-03 00:31
Autor Wiadomość
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:
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
pekfos
» 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
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 :
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
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.
P-173081
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?
P-173083
« 1 »
  Strona 1 z 1