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

Wskazywanie min/max el. tablicy

Ostatnio zmodyfikowano 2016-04-30 18:46
Autor Wiadomość
Blon
Temat założony przez niniejszego użytkownika
Wskazywanie min/max el. tablicy
» 2016-04-30 16:47:32
Witam, mam problem z wskazywaniem min/max el. w tablicy. Chcę to zrobić w czystym kodzie, w celu edukacyjnym. Tablice ustawione z palca, wszystko działa jak należy, no prawie. Nie przeszukuje indexu=0. Obojetnie jak ustawiam warunki, pomija wspomniany index. Prosiłbym o wskazanie / naprowadzenie na błąd.

Oto kod
C/C++
#include <iostream>

using namespace std;

int main()
{
    //int tab[10]={25,35,85,75,6,27,85,9,6,55};
    int tab[ 10 ] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
    // int tab[10]={1,1,1,1,1,1,1,1,1,1};
    //    0  1  2  3 4  5  6 7 8  9
    cout << "Wyszukanie MIN i MAX elementu w tablicy oraz jego indexu.\n" << endl;
    int minn, maks = tab[ 0 ];
    int indexmin, indexmaks = 0;
    for( int i = 1; i < sizeof( tab ) / sizeof( int ); i++ )
    {
        if( tab[ i ] <= minn )
        {
            minn = tab[ i ];
            indexmin = i;
        }
        else if( tab[ i ] >= maks )
        {
            maks = tab[ i ];
            indexmaks = i;
        }
    }
   
    for( int i = 1; i <= sizeof( tab ) / sizeof( int ); i++ )
    {
        if( tab[ i ] == minn )
        {
            i == indexmin;
            cout << "Najmniejsza wartosc w tablicy to: " << minn << " indeksy: " << i << endl;
        }
        if( tab[ i ] == maks )
        {
            i == indexmaks;
            cout << "Najwieksza wartosc w tablicy to: " << maks << " indeksy: " << i << endl;
        }
    }
    return 0;
}

Druga kwestia po rozwiązaniu tamtego błędu. Jak zoptymalizować ten kod (używając tylko czystego kodu ;))?
P-147790
mateczek
» 2016-04-30 17:10:29
C/C++
#include<iostream>
using namespace std;
int main()
{
    //int tab[10]={25,35,85,75,6,27,85,9,6,55};
    int tab[ 10 ] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
    // int tab[10]={1,1,1,1,1,1,1,1,1,1};
    //    0  1  2  3 4  5  6 7 8  9
    cout << "Wyszukanie MIN i MAX elementu w tablicy oraz jego indexu.\n" << endl;
    int minn, maks = tab[ 0 ];
    int indexmin, indexmaks = 0;
    for( int i = 1; i < 10; i++ )
    {
        if( tab[ i ] < minn )
        {
            minn = tab[ i ];
            indexmin = i;
        }
        if( tab[ i ] > maks )
        {
            maks = tab[ i ];
            indexmaks = i;
        }
    }
    cout << minn << " " << indexmin << " " << maks << " " << indexmaks << endl;
}

co wg Ciebie znaczy czysty kod bo ja nie bardzo znam to określenie??
P-147791
Blon
Temat założony przez niniejszego użytkownika
» 2016-04-30 17:28:41
@up:
W sensie bez bibliotek z min/max, (tak tak, wiem sam użyłem sizeof choć to tylko pomocniczo ;-))

Zapomniałem o jeszcze 1 rzeczy, dopiero kiedy ty odpisałeś mi sie przypomniało, chcę aby pokazywał każdy index.
np.
int tab[10]={85,35,85,75,6,27,85,9,6,55};
Czyli max 85, index to 0,2,6, a mi pokazuje ciagle 2,6

Lub
int tab[10]={0,0,0,0,0,0,0,0,0,0};
Pokazuje indexy 1-9, bez 0


Chyba juz teraz wszystko uwzglednilem.
P-147792
mateczek
» 2016-04-30 18:41:21
znaczni szukać od 0 nie od 1!!!! przynajmniej w drugiej pętli !!!
for( int i = 0; i <= sizeof( tab ) / sizeof( int ); i++ )
P-147794
Blon
Temat założony przez niniejszego użytkownika
» 2016-04-30 18:46:18
Omg... a ja ciągle zmienialem warunki 1 pętli, że też tego nie widziałem, dzięki wielkie.

edit:
Zauwazyłem jeszcze, że wcale nie potrzebuje indexmin/maks, tylko po prostu do indexu wrzucac, więc umieszczam, może sie komuś przyda:

C/C++
#include <iostream>

using namespace std;

int main()
{
    int tab[ 10 ] = { 6, 35, 85, 75, 6, 27, 85, 9, 6, 55 };
    // int tab[10]={0,0,0,0,0,0,0,0,0,0};
    // int tab[10]={1,1,1,1,1,1,1,1,1,1};
    //    0  1  2  3 4  5  6 7 8  9
    cout << "Wyszukanie MIN i MAX elementu w tablicy oraz jego indexu.\n" << endl;
    int minn, maks = tab[ 0 ];
    int index = 0;
    for( int i = 1; i < sizeof( tab ) / sizeof( int ); i++ )
    {
        if( tab[ i ] <= minn )
        {
            minn = tab[ i ];
            index = i;
        }
        else if( tab[ i ] >= maks )
        {
            maks = tab[ i ];
            index = i;
        }
    }
   
    for( int i = 0; i <= sizeof( tab ) / sizeof( int ); i++ )
    {
        if( tab[ i ] == minn )
        {
            i == index;
            cout << "Najmniejsza wartosc w tablicy to: " << minn << " indeksy: " << i << endl;
        }
        if( tab[ i ] == maks )
        {
            i == index;
            cout << "Najwieksza wartosc w tablicy to: " << maks << " indeksy: " << i << endl;
        }
    }
    return 0;
}
P-147796
« 1 »
  Strona 1 z 1