funkcja zwracajaca wartosc maks
Ostatnio zmodyfikowano 2013-01-12 13:50
rooker Temat założony przez niniejszego użytkownika |
funkcja zwracajaca wartosc maks » 2013-01-11 23:57:50 Troche dzisiaj szaleje z pytaniami na forum ;) A wiec tak mam napisać procedurę zwracającą przez referencję indeksy komórki zawierającej największy element i zrobiłem to jednakże wyskakuje błąd programu, może ktoś to sprawdzić? void indeksymaks( int t[ n ][ m ], int & imaks, int & jmaks ) { imaks = 0; jmaks = 0; for( int i = 0; i < n; i++ ) { for( int j = 0; j < m; j++ ) { if( t[ i ][ j ] > t[ imaks ][ jmaks ] ) { t[ imaks ][ jmaks ] = t[ i ][ j ]; } imaks++; jmaks++; } } }
|
|
jsc |
» 2013-01-12 00:14:49 Jak wygląda reszta programu i jaki jest log błędu. |
|
rooker Temat założony przez niniejszego użytkownika |
» 2013-01-12 09:38:06 Program się uruchami, pojawia się konsola i po chwili się wyłącza. Oto caly program: using namespace std; const int n = 5; const int m = 6;
void wypelnij( int t[ n ][ m ], int a, int b ) { for( int i = 0; i < n; i++ ) { for( int j = 0; j < m; j++ ) { t[ i ][ j ] =( rand() %( b - a ) + a ); } } } void wypisz( int t[ n ][ m ] ) { for( int i = 0; i < n; i++ ) { for( int j = 0; j < m; j++ ) { cout << t[ i ][ j ] << " "; } cout << endl; } } void indeksymaks( int t[ n ][ m ], int & imaks, int & jmaks ) { imaks = 0; jmaks = 0; for( int i = 0; i < n; i++ ) { for( int j = 0; j < m; j++ ) { if( t[ i ][ j ] > t[ imaks ][ jmaks ] ) { t[ imaks ][ jmaks ] = t[ i ][ j ]; } imaks++; jmaks++; } } }
int main() { int t[ n ][ m ]; int imaks, jmaks; wypelnij( t, 50, 3 ); wypisz( t ); indeksymaks( t, imaks, jmaks ); cout << endl << "imaks=" << imaks << endl; cout << endl << "jmaks" << jmaks << endl; return 0; } |
|
unimator |
» 2013-01-12 10:11:07 Nie powinno być tak w pętli? if( t[ i ][ j ] > t[ imaks ][ jmaks ] ) { imaks = i; jmaks = j; }
Bo w końcu interesują nas tylko indeksy a nie wartości. if( t[ i ][ j ] > t[ imaks ][ jmaks ] ) { t[ imaks ][ jmaks ] = t[ i ][ j ]; } ]
Coś takiego nadpisze Ci obecny "maksymalny" element czyli zmodyfikuje tablicę. Funkcja zwracająca wartość maksymalną nie może czegoś takiego robić. A tego to już kompletnie nie rozumiem. Co to ma niby robić :D? |
|
rooker Temat założony przez niniejszego użytkownika |
» 2013-01-12 10:22:43 dobra dzięki, już poprawiłem błędy i wszystko działa. |
|
rooker Temat założony przez niniejszego użytkownika |
» 2013-01-12 10:49:27 A teraz napisałem funkcje zwracający maksymalny elemnt za pomoca struktury i moje pytanie brzmi dlaczego musze tutaj użyc tego return'a id bo nie do konca to rozumiem. indeks maks2( int t[ n ][ m ] ) { indeks id; id.imaks = 0; id.jmaks = 0; for( int i = 0; i < n; i++ ) { for( int j = 0; j < m; j++ ) { if( t[ i ][ j ] > t[ id.imaks ][ id.jmaks ] ) { id.imaks = i; id.jmaks = j; } } } return id; }
|
|
unimator |
» 2013-01-12 11:43:05 Bo Twoja funkcja zwraca typ o nazwie "struktura" (patrz nagłówek funkcji). A każda funkcja (z wyjątkiem void) powinna coś zwracać. |
|
rooker Temat założony przez niniejszego użytkownika |
» 2013-01-12 12:08:32 To jeszcze jedno pytanie. Czy funkcja typu int moze zwracac zmienne typu char? |
|
« 1 » 2 |