Bardzo proszę o napisanie tego programu w języku c++ w jak najprostszy sposób, gdzie jedyną otworzoną biblioteką będzie iostream.

Masz dany ciąg liczb całkowitych a1, a2, … an. Zadaniem Twojego programu jest obliczenie ile różnych liczb występuje w tym ciągu.
Zadanie

Napisz program, który:

* wczyta ze standardowego wejścia liczbę naturalną n (n<=100), oznaczającą liczbę elementów ciągu, a następnie liczby a1, a2, … an,
* wypisze na standardowe wyjście liczbę różnych elementów ciągu a1, a2, … an.

Wejście

* W pierwszym wierszu wejścia znajduje się jedna liczba naturalna n
* w drugim wierszu wejścia znajduje się n liczb całkowitych a1, a2, … an.,
-2000000000<=ai <=2000000000, pooddzielanych pojedynczymi odstępami.

Wyjście

W jedynym wierszu wyjścia należy wypisać jedną liczbę naturalną k, oznaczającą liczbę różnych elementów w ciągu a1, a2, … an..
Przykład

Dla danych wejściowych:

5

4 8 7 4 8

poprawną odpowiedzią jest:

3

W tym ciągu są 3 różne elementy: 4, 8 i 7.

1

Odpowiedzi

2010-02-07T16:28:45+01:00
#include <iostream>

using namespace std;

//funkcja, ktora sprawdza czy w tablicy tab
//o rozmiarze size
//znajduje sie element o wartosci buff
bool search (int* tab, int size, int buff)
{
for(int i=0; i<size; i++)
if(tab[i] == buff)
return true;

return false;

}

int main(int argc, char *argv[])
{
//wczytujemy rozmiar danych wejsciowych
int size;
cin>>size;

//tworzymy tablice, przechowujaca wczytane elementy
int* tab = new int [size];

//index wpisywanych elementow w tablicy tab
int index = 0;
//liczba roznych elementow ciagu
int elem = 0;

//wypelnienie tablicy wartosciami INT_MAX
for(int i=0; i<size; i++)
tab[i] = INT_MAX;


//wczytujemy kolejne elementy ciagu
for(int i=0; i<size; i++)
{
int buff;
cin>>buff;

//sprawdzamy czy taki element juz wystapil
if ( !search(tab,size,buff) )
{
//jezeli nie to go wpisujemy i zwiekszamy indeksy
tab[index] = buff;
elem++;
index++;
}

}

//wypisujemy liczbe roznych elementow ciagu
cout<<elem<<endl;

delete []tab;


system("PAUSE");
return EXIT_SUCCESS;
}