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