Nadesłany przez Kasia Pastwa, 29 listopada 2013 20:27
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.Pobierz pełne rozwiązanie.
Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.
dominanta.cs:
//Szukanie dominanty - elementu wystepujacego najczesciej
//www.algorytm.org
using System;
using System.Linq;
//biblioteki potrzebne do obsługi zastosowanych funkcji
namespace Dominanta
{
class Program
{
//metoda do pokazywania każdej tablicy
static public void ShowTable(int[] tab)
{
Console.Write("\t{");
foreach (int i in tab)
{
Console.Write(i + " , ");
}
Console.Write("}");
Console.WriteLine();
}
//program
static void Main(string[] args)
{
//tablica w ktorej szukamy dominanty
int[] tab = { 2, 2, 4, 4, 1, 3, 4, 2, 5, 1, 3, 1, 4, 4 };
//tablica wartosci
int[] L = { };
//tablica liczby wystapien
int[] W = { };
//zlicz wystepowanie poszczegolnych liczb w tablicy tab
for (int i = 0; i < tab.Length; i++)
{
//zapytanie czy zawiera - można też zrobić w pętli
if (L.Contains(tab[i]))
{
int index = Array.IndexOf(L, tab[i]);
W[index] += 1;
}
else
{
int l = L.Length + 1;
int w = W.Length + 1;
Array.Resize(ref L, l); //zmiana wielkości tablicy
Array.Resize(ref W, w);
L[l - 1] = tab[i]; //dodanie nowej wartości
W[w - 1] = 1;
}
}
//poszukaj liczbe najczesciej wystepujaca
int max = 0;
int indexmax = 0;
for (int i = 0; i < W.Length; i++)
{
if (W[i] > max)
{
max = W[i];
indexmax = i;
}
}
//wypisz wynik
Console.WriteLine("Dany jest zbiór liczb: ");
ShowTable(tab);
Console.WriteLine("Lista liczb występujących w zbiorze: ");
ShowTable(L);
Console.WriteLine("Występowanie liczb w zbiorze: ");
ShowTable(W);
Console.WriteLine("Dominantą jest liczba " + L[indexmax] + ", pojawia się {0} razy.", max);// różne metody zapisu danych
Console.ReadLine();
}
}
}

