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 #include <iostream>
using namespace std;
int main() { int tab[ 10 ] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; 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 ;))? |
|
mateczek |
» 2016-04-30 17:10:29 #include<iostream> using namespace std; int main() { int tab[ 10 ] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; 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?? |
|
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. |
|
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++ ) |
|
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: #include <iostream>
using namespace std;
int main() { int tab[ 10 ] = { 6, 35, 85, 75, 6, 27, 85, 9, 6, 55 }; 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; }
|
|
« 1 » |