Prosila bym pisac prostymi algorytmami typu: if, while, for itp, bo jestem na poziomie liceum i nie ktorych mogla bym nie znac
Zadanie w programie C++


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, 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-14T22:40:06+01:00
#include <cstdlib>
#include <iostream>

using namespace std;

//funkcja sprawdza, czy w tablicy
//jest juz zadany element
bool find(int* tab, int size, int elem)
{
for(int i=0; i<size; i++)
if(tab[i] == elem)
return true;

return false;
}

int main(int argc, char *argv[])
{
//wczytujemy liczbe wyrazow ciagu
int size;
cin>>size;

int counter = 0;

//tworzymy tymczasowa tablice
int *tab = new int[size];

//wypelniamy tymczasowa tablice wartosciami INT_MAX
for(int i=0; i<size; i++)
tab[i] = INT_MAX;


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

//liczymy i zapamietujemy niepowtarzajace sie wyrazy
if( !find(tab,size,buff) )
{
tab[counter] = buff;
counter++;
}

}


cout<<counter<<endl;

delete []tab;


system("PAUSE");
return 0;
}