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

[C++] - Adres największego elementu tablicy

Ostatnio zmodyfikowano 2014-11-25 12:16
Autor Wiadomość
Vixos
Temat założony przez niniejszego użytkownika
[C++] - Adres największego elementu tablicy
» 2014-11-25 11:38:23
Chodzi o to aby funkcja nie zwracała największego elementu, ale numer jaki zajmuje w tabeli.

int *maximum(int N, int *t)
{
       if(N==0) return 0;
       if(N==1) return t;
       if(*(t+N-1)>*maximum(N-1,t))
            return t+N-1;
       else
            return maximum(N-1,t);
}

int t[] = {1,2,3,4,-1,2};
  cout<<*maximum(6,t)<<endl;

//Czyli dla podanych danych wynik powinien być: 3.
P-121348
akwes
» 2014-11-25 12:16:00
Rozumiem, że adres masz na myśli "4 miejsce od początku tablicy" a nie "0x00FF..."? Jeżeli tak, to możesz od adresu zmiennej (int*) odjąć adres tablicy (int*) wtedy otrzymasz wynik w postaci std::ptrdiff_t, który jest typem całkowitoliczbowym i dasz radę go wypisać za pomocą std::cout. Należy pamiętać aby przy takim odejmowaniu używać adresów z tej samej tablicy.

W Twoim przypadku wystarczy nieznacznie zmienić tę linię kodu:
C/C++
cout <<* maximum( 6, t ) << endl;

Potrzebujesz od adresu zmiennej odjąć adres tablicy.

// A, i jeszcze popraw formatowanie postu :) Co i jak znajdziesz w takiej czerwonej ramce, która na pewno rzuciła Ci się w oczy :)
P-121349
« 1 »
  Strona 1 z 1