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

Najmniejsza i najwieksza wartość funkcji - tablica

Ostatnio zmodyfikowano 2016-01-25 18:29
Autor Wiadomość
locf
Temat założony przez niniejszego użytkownika
Najmniejsza i najwieksza wartość funkcji - tablica
» 2016-01-25 14:31:05
Mam zadanie, zgodnie z którym mam napisać funkcję, która dla jakieś tablicy liczb rzeczywistych A[w][w] przekazuje przez parametry największą i najmniejszą wartość na głównej przekątnej.
Próbowałem zrobić to z tablicą liczb rzeczywistych, ale kompilator zwraca problem, że nie może tego wykonać.
Ktoś mógłby rzucić okiem i doradzić, co jest do poprawienia?
 
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <cmath>

using namespace std;

const int n = 5;

int najwieksza( int A[ n ][ n ] )
{
    int najmniejsza = A[ 0 ][ 0 ];
    int najwieksza = A[ 0 ][ 0 ];
    for( int i = 0; i < n; i++ )
    {
        if( A[ i ][ i ] > najwieksza )
             najwieksza = A[ i ][ i ];
       
        if( A[ i ][ i ] < najmniejsza )
             najmniejsza = A[ i ][ i ];
       
    }
    cout << "\nNajmniejsza to " << najmniejsza;
    cout << "\nNajwieksza to " << najwieksza;
    return najmniejsza;
}

int main()
{
    int A[ n ][ n ];
    srand( time( 0 ) );
    for( int i = 0; i < n; i++ )
    for( int j = 0; j < n; j++ )
         A[ i ][ j ] = rand();
   
    cout << "\nTablica wczytana\n";
    for( int i = 0; i < n; i++ )
    {
        for( int j = 0; j < n; j++ )
        {
            cout.width( 10 );
            cout << A[ i ][ j ];
        }
        cout << endl;
    }
    najwieksza( A );
    return 0;
}
P-143989
carlosmay
» 2016-01-25 14:52:51
Próbowałem zrobić to z tablicą liczb rzeczywistych, ale kompilator zwraca problem, że nie może tego wykonać.
Czego nie może wykonać?

Funkcja ma dwie funkcjonalności:
- szuka max
- szuka min.

Zrób z tego dwie funkcje zwracające wartość max oraz min.
Teraz funkcja zwraca minimalną, z którą i tak nic nie robisz.
P-143991
mateczek
» 2016-01-25 15:38:46
funkcja jedzie po przekątnej!! z tablicy


 2 10  0
12  1 14
12 33  5


największą zwróci 5 najmniejszą 1
P-143992
locf
Temat założony przez niniejszego użytkownika
» 2016-01-25 17:22:08
Jeśli to ma być tablica liczb rzeczywistych, to chyba w zadaniu chodzi o zmiennoprzecinkowe, np. float więc jeśli zmienię kod na taki:

C/C++
float najwieksza( float A[ n ][ n ] )

to mam komunikat,że
error: cannot convert 'int (*)[5]' to 'float (*)[5]' for argument '1' to 'float najwieksza(float (*)[5])'

Nie mogę podzielić funkcji na dwie. Musi być jedna funkcja. Przy czym zastanawiałem się jak to zrobić, jeśli jedna funkcja ma zwrócić dwie wartości skoro jest jedno
return
?
Wyświetlam sobie te dwa ekstrema, więc częściowo realizuję polecenie.


P-143994
carlosmay
» 2016-01-25 17:38:44
to mam komunikat,że
error: cannot convert 'int (*)[5]' to 'float (*)[5]' for argument '1' to 'float najwieksza(float (*)[5])'
To znaczy, że przekazujesz do funkcji inny typ niż odbierasz.

Nie mogę podzielić funkcji na dwie. Musi być jedna funkcja. Przy czym zastanawiałem się jak to zrobić, jeśli jedna funkcja ma zwrócić dwie wartości skoro jest jedno return?
Jest jedno return, ale może zwrócić powiązane ze sobą wartości, np. strukturę,
choć w tym przypadku użyłbym min i max zadeklarowane w main() i przekazał do funkcji przez referencję.
P-143995
locf
Temat założony przez niniejszego użytkownika
» 2016-01-25 17:58:18
A mógłbyś pokazać jak wyglądałaby część kodu z tą referencją.Dopiero jestem po lekturze tego zagadnienia. Mniej więcej wiem o co chodzi.

Czyli muszę zadeklarować w
main
, że
float A[ n ][ n ]
,aby otrzymać float jako typ zwracany?
P-143996
carlosmay
» 2016-01-25 18:09:50
Czyli muszę zadeklarować w main, że float A[ n ][ n ],aby otrzymać float jako typ zwracany?
Tak.

Referencje:
C/C++
void fun( int a, int & ref_b )
{
    a = 8;
    ref_b = a * 4;
}

int main()
{
    int a = 0;
    int b = 0;
   
    std::cout << a << ", " << b << std::endl;
    fun( a, b );
    std::cout << a << ", " << b << std::endl;
}
P-143998
locf
Temat założony przez niniejszego użytkownika
» 2016-01-25 18:29:49
Dzięki za pomoc !
P-144000
« 1 »
  Strona 1 z 1