Ile jest w tablicy różnych liczb? C++

zxcvkolos
Użytkownik
Użytkownik
Posty: 23
Rejestracja: 13 maja 2009, o 21:34
Płeć: Kobieta
Podziękował: 5 razy

Ile jest w tablicy różnych liczb? C++

Post autor: zxcvkolos »

Witam bardzo proszę o pomoc, nie wiem jak napisac program, który liczy ile jest w tablicy różnych liczb. Liczby podaje użytkownik. Z góry dziękuje za pomoc.
Awatar użytkownika
kadiii
Użytkownik
Użytkownik
Posty: 642
Rejestracja: 20 gru 2005, o 21:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Pomógł: 130 razy

Ile jest w tablicy różnych liczb? C++

Post autor: kadiii »

Algorytm zalezy od tego czy zakres liczb możliwych do podania przez użytkownika jest mały czy duży. Jesli mały, a liczby są całkowite to można zrobić dodatkową tablicę, kazdy indeks odpowiada wprost danej wartości. Przeletujemy pętlą i zwiększamy wartość komórki tablicy o indeksie jaką wartość odczytaliśmy z pierwotnej tablicy. Dzięki temu po jednej iteracji w tablicy ilość elementów o danej wartości i po dokonaniu jednej iteracji na tej tablicy uzyskujemy żądany efekt(zliczenie ilości niezerowych komórek). Jesli natomiast liczby nie mają konkretnego zakresu to najprościej je chyba posortować i potem zobaczyć ile jest różnych.

Kod: Zaznacz cały

#include <iostream>
using namespace std;
main()
{
 const int N=10;
 int tab[N];
 int i,licznik=1;
 for(i=0;i<N;i++) cin>>tab[i];
 sort(tab,tab+10);
 for(i=0;i<N-1;i++) 
  if(tab[i]!=tab[i+1]) licznik++;
 cout<<licznik;
}
EDIT: Zmieniłem żeby nie wprowadzić kogoś w błąd.
Ostatnio zmieniony 14 maja 2009, o 20:06 przez kadiii, łącznie zmieniany 1 raz.
matshadow
Użytkownik
Użytkownik
Posty: 941
Rejestracja: 17 gru 2007, o 21:48
Płeć: Mężczyzna
Lokalizacja: Kingdom Hearts
Podziękował: 6 razy
Pomógł: 222 razy

Ile jest w tablicy różnych liczb? C++

Post autor: matshadow »

Chyba zły zakres podałeś, kadiii, w ostatnim forze. Powinno być

Kod: Zaznacz cały

#include <iostream>
using namespace std;
main()
{
const int N=10;
int tab[N];
int i,licznik=0;
for(i=0;i<N;i++) cin>>tab[i];
sort(tab,tab+10);
for(i=0;i<N-1;i++)
  if(tab[i]!=tab[i+1]) licznik++;
cout<<licznik;
}
zxcvkolos
Użytkownik
Użytkownik
Posty: 23
Rejestracja: 13 maja 2009, o 21:34
Płeć: Kobieta
Podziękował: 5 razy

Ile jest w tablicy różnych liczb? C++

Post autor: zxcvkolos »

Bardzo dziękuje za pomoc
Awatar użytkownika
kadiii
Użytkownik
Użytkownik
Posty: 642
Rejestracja: 20 gru 2005, o 21:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Pomógł: 130 razy

Ile jest w tablicy różnych liczb? C++

Post autor: kadiii »

Jasne, oczywiście do N-1 - za szybko napisałem .
zxcvkolos
Użytkownik
Użytkownik
Posty: 23
Rejestracja: 13 maja 2009, o 21:34
Płeć: Kobieta
Podziękował: 5 razy

Ile jest w tablicy różnych liczb? C++

Post autor: zxcvkolos »

napewno N-1 bo jak mam program z N-1 to podaje o jedna liczbe za malo a jak jest bez to dobrze?
Awatar użytkownika
kadiii
Użytkownik
Użytkownik
Posty: 642
Rejestracja: 20 gru 2005, o 21:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Pomógł: 130 razy

Ile jest w tablicy różnych liczb? C++

Post autor: kadiii »

hehe, tak to jest jak sie pisze z palca bez kompilatora. Powinien być licznik ustawiony na starcie na 1 - licznik=1; . A petla oczywiscie do N-1.
ODPOWIEDZ