Nadesłany przez Michał Witaszek, 19 lipca 2011 14:00
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.cpp:
//Program do wyznacznia najczęściej występującej wartości w tablicy (dominaty)
//Michał Witaszek
//dla algorytm.org
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
int T[100]; // Tablica będzie przechowywała zadany zbiór liczb
int lista[100]; // Lista liczb występujących w zbiorze
int wystepowanie[100]; // Zapamięta ile razy liczby pojawiają się w zbiorze
int n;
int i,j; // Będą służyły jako indeksy tablic
bool znaleziono; // Podczas przeszukiwania tablic będzie określała czy liczba już zajduje się na liście
int dlugosc_listy=0;
const string separator = "--------------------------- \n";
start:
// Pobranie od użytkownika ilości elementów tablicy
cout << "Ilosc elementow tablicy: ";
cin >> n;
if (n<=0 || n>100)
{
cout << "Podaj wartosc z akresu 1-100 \n";
goto start;
}
cout << separator;
// Odczytywanie n elementów tablicy
for (i=0; i<n; i++)
{
cout << "Wartosc nr " << i+1 << ": ";
cin >> T[i];
}
// Przeszukiwanie zadanej tablicy T[]
for (i=0; i<n; i++)
{
j=0;
znaleziono= false;
// Przeszukuje listę liczb aż znajdzie w niej aktualnie odczytaną wartość z tablicy T[]
// lub osiągnie koniec listy
for (j=0; j<dlugosc_listy; j++)
{
if (lista[j]==T[i]) //Jeśli liczba znajduje się na liście...
{
wystepowanie[j]++; // Zwiększ ilość wystąpień liczby o 1
znaleziono= true; // Zapamiętaj że odnaleziono liczbę.
}
if (znaleziono) break;
}
if (!znaleziono) //Jeśli liczba nie znajduje się jeszcze na liście...
{
dlugosc_listy++;
lista[dlugosc_listy-1]=T[i]; //Wstaw liczbę na ostanią pozycje w liście
wystepowanie[dlugosc_listy-1]=1; //Ustaw ilość wystąpień liczby na 1
}
}
cout << separator;
//Dla przejżystości program wypisze ilośći wystąpień wszystkich liczb.
for (i=0; i<dlugosc_listy; i++) {cout << lista[i] << " x " << wystepowanie[i] << endl;}
cout << separator;
//Szukanie najczęściej występującej liczby
i=0;
j=0;
for (i=1; i<dlugosc_listy; i++) //Przeszukanie tablicy występowania liczb
{
//Jeśli liczba wystąpień jest większa od poprzednio znalezionej...
if (wystepowanie[i] >= wystepowanie[j]) j=i; // zapamiętaj indeks liczby.
}
//Wypisz wynik
cout << "Dominanta jest liczba " << lista[j] << endl;
cout << "Pojawia sie " << wystepowanie[j] << " razy." << endl;
//Czekaj na ANYKEY
system("PAUSE");
//i zamknij program
return 0;
}


if (n100)
{
cout