algorytm.org

Implementacja w C/C++

Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Wyznaczanie dominanty – mody - Implementacja w C/C++
Ocena użytkownikóww: *****  / 8
SłabyŚwietny
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;
}
Komentarze
photo
+1 # Minik42 2012-07-26 18:31
Nie powinno używać się instrukcji goto zamiast tego można użyć while(cin>>n)
if (n100)
{
cout
Odpowiedz | Odpowiedz z cytatem | Cytować
Dodaj komentarz