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

[c++] funkcja wyswietla wiecej niz powinna

Ostatnio zmodyfikowano 2016-02-04 16:25
Autor Wiadomość
Barnak
Temat założony przez niniejszego użytkownika
[c++] funkcja wyswietla wiecej niz powinna
» 2016-02-03 22:57:22
Mianowicie funkcja w moim programie, oprócz wyświetlenia informacji o element najczęściej występujący dodatkowo wyświetla informacja odnośnie pierwszego elementu.Podpowiedzcie proszę gdzie się machnąłem.


C/C++
void powtarza_sie_max( int n, int t[] )
{
    int max = 0, ilosc = 0, ilosc_biezaca;
    for( int i = 0; i < n; ++i )
    {
        ilosc_biezaca = 0;
        for( int j = 0; j < n; j++ )
        {
            if( t[ j ] == t[ i ] )
                 ilosc_biezaca++;
           
            max = t[ i ];
        }
        if( ilosc_biezaca > ilosc )
       
        {
            ilosc = ilosc_biezaca;
            cout << "najczesciej w tablicy powtarza sie " << max << " powtarza sie " << ilosc << " razy" << endl;
        }
       
    }
   
}
P-144437
pekfos
» 2016-02-03 23:06:46
Informacja zawsze się wyświetli dla pierwszego elementu, bo pierwszy element występuje co najmniej raz, a 1 > 0. Jeśli to ma dotyczyć tylko maksimum, nie rób tego w pętli.
P-144438
Barnak
Temat założony przez niniejszego użytkownika
» 2016-02-03 23:34:46
Wielkie dzięki.

Jednak pojawia się jeden problem

zdarza się że policzy mi element max więcej razy niż powinno
P-144439
mateczek
» 2016-02-04 15:23:18
C/C++
#include <iostream>
#include <fstream>
using namespace std;
void powtarza_sie_max( int n, int t[] )
{
    int max = 0, ilosc = 0, ilosc_biezaca;
    for( int i = 0; i < n; ++i )
    {
        ilosc_biezaca = 0;
        for( int j = 0; j < n; j++ ) {
            if( t[ j ] == t[ i ] )
                 ilosc_biezaca++;
           
        }
        if( ilosc_biezaca > ilosc ) {
            ilosc = ilosc_biezaca;
            max = t[ i ];
        }
       
    }
    cout << "najczesciej w tablicy powtarza sie " << max << " powtarza sie " << ilosc << " razy" << endl;
}

int main()
{
    int tabl[ 10 ] { 3, 3, 3, 4, 5, 6, 6, 6, 3, 6 };
    powtarza_sie_max( 10, tabl );
}
masz przykładowy kod !!! jeśli znajdziesz tablicę dla której algorytm zachowuje się źle skorzystaj z debugera !!!

https://www.youtube.com/watch​?v=L9JvSHYLvuw lub wklej tą tablicę i się zobaczy !!!

RÓWNIE DOBRZE WINNY MOŻE BYĆ BŁĘDNY ROZMIAR TABLICY PRZESŁANY DO FUNKCJI!!!
P-144452
Barnak
Temat założony przez niniejszego użytkownika
» 2016-02-04 16:25:50
dzięki za poprawienie błędu w funkcji w tej chwili sprawdza się świetnie
P-144453
« 1 »
  Strona 1 z 1