Element tablicy mniejszy od max i wiekszy od pozostałych
Ostatnio zmodyfikowano 2015-05-17 19:59
Klakson Temat założony przez niniejszego użytkownika |
Element tablicy mniejszy od max i wiekszy od pozostałych » 2015-05-16 19:17:32 Witam, Mam problem z którym nie potrafię sobie poradzić. W tablicy (10 losowych elementów)mam znaleźć element mniejszy od max i większy od pozostałych ośmiu. Jak to robię. najpierw szukam element o najwiekszej wartości a nastepnie element który jest największy i różny od elementu o najwiekszej wartości. Nieststy to nie działa. Czy możecie mi pomóc? Druga tablica jest o to aby ułożyć element w kolejności od min do max. #include<iostream> #include<stdlib.h> #include<time.h> #include<conio.h>
using namespace std;
int main() { srand( time( NULL ) ); int tab[ 10 ]; int tablica[ 10 ]; int max, max1; for( int i = 0; i < 10; i++ ) { tab[ i ] = rand(); cout << tab[ i ] << " "; } cout << endl; max = tab[ 0 ]; for( int j = 0; j < 10; j++ ) { if( max < tab[ j ] ) { max = tab[ j ]; } } tablica[ 9 ] = max; cout << tablica[ 9 ] << endl; max1 = tab[ 0 ]; for( int j = 0; j < 10; j++ ) { if( max1 < tab[ j ] && max1 != max ) { max1 = tab[ j ]; } } tablica[ 8 ] = max1; cout << tablica[ 8 ] << endl; getch(); return 0; } . [/i] |
|
pekfos |
» 2015-05-16 20:44:41 Czy to zmierza w stronę selection sort..? |
|
Klakson Temat założony przez niniejszego użytkownika |
» 2015-05-17 17:41:18 Teoretycznie tak, ale moim problemem jest znalezienie elementu o jeden mniejszego od max. |
|
michal11 |
» 2015-05-17 18:13:16 A spróbuj tak: if( max1 != max { continue; } if( max1 < tab[ j ] ) { max1 = tab[ j ]; } ) |
|
Klakson Temat założony przez niniejszego użytkownika |
» 2015-05-17 19:48:44 Niestety nie działa. |
|
michal11 |
» 2015-05-17 19:59:56 1. tablica[ 9 ] = max; Tak robiąc gubisz ostatni element (no chyba, że ostatnio to będzie akurat max, ale to jest akurat nieistotne), powinieneś swapować. 2. Jeżeli już będziesz swapował i na ostatniej pozycji będzie max to wtedy wystarczy tylko przeszukiwać pierwsze 9 elementów żeby znaleźć 2 największy element. w tej pętli: for( int j = 0; j < 10; j++ ) { if( max < tab[ j ] ) { max = tab[ j ]; } }
Dodaj sobie zapamiętywanie indeksu (coś w rodzaju tmp=j). A później wystarczy tylko for( int j = 0; j < 9; j++ ) . przydatny link: http://www.cplusplus.com/reference/utility/swap/?kw=swap |
|
« 1 » |