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

Element tablicy mniejszy od max i wiekszy od pozostałych

Ostatnio zmodyfikowano 2015-05-17 19:59
Autor Wiadomość
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.
C/C++
#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]
P-132362
pekfos
» 2015-05-16 20:44:41
Czy to zmierza w stronę selection sort..?
P-132364
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.
P-132408
michal11
» 2015-05-17 18:13:16
A spróbuj tak:
C/C++
if( max1 != max
{
    continue;
}
if( max1 < tab[ j ] )
{
    max1 = tab[ j ];
} )
P-132409
Klakson
Temat założony przez niniejszego użytkownika
» 2015-05-17 19:48:44
Niestety nie działa.
P-132413
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:
C/C++
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
P-132414
« 1 »
  Strona 1 z 1