Modalna tablicy

0

Witam!
Mam za zadanie napisać program, który będzie zwracał modalną tablicy. Tak więc na początku użyłem pętli aby posortować tablice od największego do najmniejszego. Następnie jest kolejna pętla nieskończona, która ma za zadanie sprawdzać który ciąg cyfr jest najdłuższy. Program zwraca poprawne wyniki tylko w niektórych przypadkach, ale nie wiem od czego to zależy. Głowie się już nad tym i nie mam pomysłu. Do funkcji jest przekazana tablica score[] (z tego zbioru modalna) oraz zmienna shotNumber (ilość elementów w tablicy).

int calcMode(int score[], int shotNumber)
{
     for(int i = 0; i < shotNumber-1; i++)
    {
        for(int j = 0; j < shotNumber-1; j++)
        {
            if(score[j] < score[j+1])
            {
                int p = score[j];
                score[j] = score[j+1];
                score[j+1] = p;
            }
        }
    }
    int suma = 0;
    int w = 0;
    int i = 0;
    int suma3 = 0;
    int mag = 0;
    int mag1 = 0;
    int mag2 = 0;
    for (;;)
    {
    for (i = w; i <= shotNumber - 1; i++)
    {
        if (score[i] == score[i+1])
        {
            suma++;
            mag = i;
            w = i+1;
        }
        else
        {
            w = i+1;
            mag = i;
            break;
        }
    }
    int suma2 = 0;
    for (i = w; i <= shotNumber - 1; i++)
    {
     if (score[i] == score[i+1])   
     {
         suma2++;
         mag1 = i;
         w = i+1;
     }
     else
     {
         w = i+1;
         mag1 = i;
         break;
     }
    }
    
    if (suma == suma2)
    {
        if(score[mag] > score[mag1])
        {
            suma3 = suma;
            mag2 = mag1;
        }
        else
        {
            suma3 = suma2;
            mag2 = mag;
        }
    }
    if (suma > suma2)
    {
        if (suma > suma3)
        {
        suma3 = suma;
        mag2 = mag;
        }
    }
    else
    {
      if(suma2 > suma3)
      {
      suma3 = suma2;
      mag2 = mag1;
      }
    }
    if (i == shotNumber)
    {
        break;
    }
    }
    
    return score[mag2-1];
}
0
lion137 napisał(a):

Sporo gotowców na sieci, Porównaj sobie: https://duckduckgo.com/?q=find+mode+element+algorithm&t=canonical&ia=web

Dziękuje znalazłem już stronę na której był podany algorytm :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1