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

Pitanje u vezi koda

[es] :: C/C++ programiranje :: Pitanje u vezi koda

[ Pregleda: 1405 | Odgovora: 0 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Stevan_Chakic
n/a
n/a
Podgorica

Član broj: 310273
Poruke: 10
*.crnagora.net.



Profil

icon Pitanje u vezi koda04.11.2013. u 23:14 - pre 76 meseci
Tekst zadatka:
1.a) Napisati proceduru void Popuni(int *x, int len) koja od korisnika učitava
prirodan broj k, a zatim popunjava niz x dužine len slučajnim brojevima iz
segmenta [1, k].
b) Dva broja su prijateljska ako imaju isti broj parnih cifara. Na primjer, brojevi
1245 i 22 su prijateljski, dok 23 i 5 nijesu. Napisati funkciju int
BrPrijateljskihTrojki(int *x, int n) koja vraća koliko u nizu ima trojki
elemenata koji su prijateljski. Na primjer, ako je niz {12,235,5,51,128,777,4},
funkcija treba da vrati 5 jer su sljedeće trojke prijateljske
(12,235,128),(12,235,4), (12,128,4),(235,128,4) i (5,51,777)
U main funkciji učitati broj elemenata niza, a zatim dinamički alocirati memoriju
za niz (koristeći malloc funkciju). Popuniti niz primjenom procedure pod a), a zatim
primjenom funkcije pod b) naći traženi broj prijateljskih trojki.

Moje rjesenje:
Code:

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

void Popuni(int *x, int len)
{
    int k;
    printf("Unesite broj k: ");
    scanf("%d", &k);

    int i;
    for (i=0; i<len; i++)
    {
        x[i] = (rand()%k) + 1;
    }
}


int prijateljski(int a, int b)
{

    int br1=0;
    int br2=0;
    while (a!=0)
    {
        if((a%10)%2==0)
        {
            br1++;
        }
        a=a/10;
    }
    while (b!=0)
    {
        if((b%10)%2==0)
        {
            br2++;
        }
        b=b/10;
    }
    if (br1==br2)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}

int BrPrijateljskihTrojki(int *x, int n)
{
    int i=0;
    int j=0;
    int k=0;
    int br=0;

    for (i=0; i<n; i++)
    {
        for (j=i+1; j<n; j++)
        {
            for(k=j+1;k<n;k++)
            {
                if (prijateljski(x[i], x[j])&&prijateljski(x[i],x[k]))
                {
                    br++;
                    printf("(%d, %d, %d), ", x[i], x[j], x[k]);

                }
            }



        }
    }
    return br;
}
int main()
{   /*int test[] = {12, 235, 5, 51, 128,777,4};
    printf("%d", BrPrijateljskihTrojki(test,7));*/

    int len=0;
    printf("Unesite duzinu niza: ");
    scanf("%d", &len);
    int* x = malloc(len*sizeof(int));
    Popuni(x, len);
    printf("Broj prijateljskih trojki u gornjem nizu je %d\n", BrPrijateljskihTrojki(x,len));


    return 0;
}


Problem je sto mi se ponavljaju k-torke.Konkretno za n=15 i k=2 imam cak 91 prijateljsku k-torku umjesto dvije.Moze li neko pomoci?
 
Odgovor na temu

[es] :: C/C++ programiranje :: Pitanje u vezi koda

[ Pregleda: 1405 | Odgovora: 0 ] > FB > Twit

Postavi temu Odgovori

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