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

Pętla for - problem ze znalezieniem najmniejszej i najwiekszej liczby

Ostatnio zmodyfikowano 2012-08-04 15:55
Autor Wiadomość
jhrwekuh
Temat założony przez niniejszego użytkownika
Pętla for - problem ze znalezieniem najmniejszej i najwiekszej liczby
» 2012-07-25 19:30:29
Tak jak w temacie. Po skompilowaniu ponizszego kodu jest blad. Jesli znajduje sie liczba 10 i 30 wszystko jest ok. Jak nie ma ktorejs z liczb pojawia sie 0. Gdzie jest blad?

C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>

int wylosujLiczby( int iTablica[], int ile )
{
    for( int licznik = 0; licznik < ile; licznik++ )
         iTablica[ licznik ] =( rand() % 21 ) + 10;
   
}

void wypiszTablice( int iTablica[], int ile )
{
    for( int licznik = 0; licznik < ile; licznik++ )
    {
        std::cout << iTablica[ licznik ] << ", ";
    }
    std::cout << "." << std::endl;
}

void wypiszTabliceOdTylu( int iTablica[], int ile )
{
    int a = 9;
    for( int licznik = 20; licznik > ile; licznik-- )
    {
        std::cout << iTablica[ a ] << ", ";
        a--;
    }
    std::cout << "." << std::endl;
}

int znajdzMinimum( int iTablica[], int ile )
{
    for( int b = 0; b < 20; b++ )
    {
        int a = 10;
        for( int licznik = 0; licznik < ile; licznik++ )
        {
            if( iTablica[ licznik ] == a )
                 return iTablica[ licznik ];
           
        }
        a++;
    }
}

int znajdzMaksimum( int iTablica[], int ile )
{
    for( int b = 0; b < 20; b++ )
    {
        int a = 30;
        for( int licznik = 0; licznik < ile; licznik++ )
        {
            if( iTablica[ licznik ] == a )
                 return iTablica[ licznik ];
           
        }
        a--;
    }
}

void wypiszMinMax( int Min, int Max )
{
    std::cout << "Najmniejsza liczba to: " << Min << std::endl;
    std::cout << "Najwieksza liczba to: " << Max << std::endl;
}

int main()
{
    srand( time( 0 ) );
    int tablica[ 10 ];
    wylosujLiczby( tablica, 10 );
    wypiszTablice( tablica, 10 );
    wypiszTabliceOdTylu( tablica, 10 );
    int iMin = znajdzMinimum( tablica, 10 );
    int iMax = znajdzMaksimum( tablica, 10 );
    wypiszMinMax( iMin, iMax );
    return 0;
}
P-61109
jsc
» 2012-07-25 20:07:52
Przyjrzyj się temu kodowi:
C/C++
int znajdzMinimum( int iTablica[], int ile )
{
    for( int b = 0; b < 20; b++ )
    {
        int a = 10;
        for( int licznik = 0; licznik < ile; licznik++ )
        {
            if( iTablica[ licznik ] == a )
                 return iTablica[ licznik ];
           
        }
        a++;
    }
}
P-61112
tirou
» 2012-08-02 18:20:09
w tym powyzszym kodzie uzywasz kolego dziwnego algorytmu.
Jestem laikiem ale zauważyłem, iż w tym warunku :
if( iTablica[ licznik ] == a  return iTablica[ licznik ];
 jezeli iTablica[0] ma w sobie wartosc inna niz a (czyli 10) to zwraca ci zero. Slabo jeszcze mysle po "programistycznemu" ale spróbuj przeanalizować takie cudeńko:

C/C++
int znajdzMinimum( int iTablica[], int ile )
{
   
    int min = iTablica[ 0 ];
    for( int i = 0; i < ile; i++ ) {
        min = iTablica[ i ] < min ? d[ i ]: min;
    }
    return min;
}
P-61607
jsc
» 2012-08-02 18:44:14
Pomijając linijkę:
min = iTablica[ i ] < min ? d[ i ]: min;

To dobrze kombinujesz.
P-61608
tirou
» 2012-08-02 23:20:14
ja? czy kolega z problemem ? ;p
P-61617
jsc
» 2012-08-03 14:07:23
Ty.
P-61647
tirou
» 2012-08-03 15:41:29
a wyjasnisz jak kombinuje i co jest jeszcze nie do konca poprawnie? :)
P-61651
Netro
» 2012-08-03 16:04:45
C/C++
int znajdzMinimum( int iTablica[], int ile )
{
   
    int min = iTablica[ 0 ];
    for( int i = 0; i < ile; i++ ) {
        //tutaj należy wpisać warunek który sprawdza element tablicy czy jest mniejszy od zmiennej min
        // jeżeli warunek jest spełniony to należy tą wartość przypisać do zmiennej min
    }
    return min;
}
P-61654
« 1 » 2
  Strona 1 z 2 Następna strona