Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

[Zadatak] - stampanje elementa koji se najvise puta ponavlja u nizu

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] - stampanje elementa koji se najvise puta ponavlja u nizu

[ Pregleda: 2815 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mensi88

Član broj: 309914
Poruke: 4
*.crnagora.net.



Profil

icon [Zadatak] - stampanje elementa koji se najvise puta ponavlja u nizu16.12.2012. u 22:35 - pre 138 meseci
Zadatak glasi:
Napisati program koji učitava niz cijelih brojeva X, dužine N, i koji određuje i štampa koji se element niza ponavlja najviše puta. Ako ima više takvih elemenata, odštampati bilo koji od njih. Ukoliko nema ponavljanja elemenata u nizu, javiti odgovarajuću poruku.
Evo code-a:

Code:
#include <stdio.h>
#include <stdlib.h>
#define max 50

int main()
{
int i,j,c,ind1=1,ind2=1,N,X[max];
printf("Unesi duzinu niza: ");
scanf("%d",&N);
if(N>max){
printf("Broj elemenata ne smije biti veci od 50!");
exit(1);
}
printf("Unesi elemente niza: ");
for(i=0;i<N;i++){
scanf("%d", &X[i]);
}
for(i=1;i<N;i++){
if(X[0]==X[i]){
ind1++;
}
}
i=1;
j=1;
while(i<N){
while(j<N){
if(X[i]==X[j]){
ind2++;
}
j++;
}
if(ind2>ind1){
c=X[i];
}
i++;
j=i;
ind2=1;
}
printf("Najvise se ponavlja %d",c);
return 0;
}


Za neke nizove program radi, a za neke ne. Recimo, za niz "1 2 1 3 3 4 3 5 6" program stampa trojku, sto je ispravno, dok za niz "1 1 2 3 4 5 1 6 7 8 9 10 9" izbacuje neku bzv vrijednost. Sta da ispravim da bi radio u potpunosti? :)
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.3gnet.mts.telekom.rs.



+2789 Profil

icon Re: [Zadatak] - stampanje elementa koji se najvise puta ponavlja u nizu16.12.2012. u 23:31 - pre 138 meseci
Najlakše je ako prethodno sortiraš niz.
Code (c):

#include <stdio.h>
#include <stdlib.h>

#define MAX 50

int main() {
    int x[MAX], n, i, max_count = 0, count = 1, element;

    printf("Unesi duzinu niza: ");
    scanf("%d",&n);

    if(n > MAX) {
        printf("Broj elemenata ne smije biti veci od %d!\n", MAX);
        exit(1);
    }

    printf("Unesi elemente niza:\n");

    for(i = 0; i < n; i++){
        scanf("%d", &x[i]);
    }

    for (i = 1; i < n; ++i) {
        int j;

        for (j = 0; j < i; ++j) {
            if (x[i] > x[j]) {
                int t = x[i];

                x[i] = x[j];
                x[j] = t;
            }
        }
    }

    for (i = 1; i <= n; ++i) {
        if (i == n || x[i] != x[i - 1]) {
            if (count > max_count) {
                max_count = count;
                element = x[i - 1];
            }

            count = 1;
        } else {
            ++count;
        }
    }

    printf("Najvise se pojavljuje %d i to %d puta.\n", element, max_count);

    return 0;
}


Edit: Ispravka uočene greške.

[Ovu poruku je menjao Nedeljko dana 17.12.2012. u 10:50 GMT+1]
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

mensi88

Član broj: 309914
Poruke: 4
*.crnagora.net.



Profil

icon Re: [Zadatak] - stampanje elementa koji se najvise puta ponavlja u nizu16.12.2012. u 23:47 - pre 138 meseci
Samo u 36. liniji treba int da se ukloni i to je to.
Hvala puno Nedeljko.
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.3gnet.mts.telekom.rs.



+2789 Profil

icon Re: [Zadatak] - stampanje elementa koji se najvise puta ponavlja u nizu17.12.2012. u 09:52 - pre 138 meseci
E, tako mi i treba kad sam testirao C++ prevodiocem, a C++ dozvoljava to što C ne dozvoljava. Ispravio sam.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] - stampanje elementa koji se najvise puta ponavlja u nizu

[ Pregleda: 2815 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.