[ NooND @ 02.01.2008. 17:14 ] @
Zadatak je sledeci napraviti program koji generise dva niza po 10 clanova koristeci opciju rand zatim napraviti treci nizi ciji su clanovi zbir prvih pet clanova prva dva niza. i zatim sortirati prva dva niza uzlazno. Svasta sam ja uradio i nesto napravio ali mi je problem sabiranje dva niza ovako kako sam ja uradio radi ako su clanovi nizova koje sabiram jednocifreni, ako nisu onda nastaje problem.Pogledajte pa ako ko moze da mi pomogne bio bih zahvalan.
Code:

#include<stdio.h>
int main()
{
    int a[10];
    int b[10];
    int c[5];
    int i;
    int j;
    int k;

    /* Unosenje clanova niza */
    for(i=0;i<10;i++){
        a[i]=rand();
    }
    for(i=0;i<10;i++){
        b[i]=rand();
    }

    /* Ispisivanje nizova */
    printf("\nPrvi niz: ");
    for(i=0;i<10;i++){
        printf("%d ", a[i]);
    }

    printf("\nDrugi niz: ");
    for(i=0;i<10;i++){
        printf("%d ", b[i]);
    }
    printf("\n");

    /* Sabiranje nizova */
    for(i=0;i<5;i++){
        for(j=0;j<5;j++){
            for(k=0;k<5;k++){
                c[k]=a[i]+b[j];
            }
        }
    }
    printf("\nZbir prvih pet clanova nizova je: ");
    for(i=0;i<5;i++){
        printf("%d ", c[i]);
    }


    /* Sortiranje niza */
    printf("\n");
    for(i=0;i<10;i++){
        for(j=i+1;j<10;j++){
            if(a[i]>a[j]){
                k=a[i];
                a[i]=a[j];
                a[j]=k;
            }
        }
    }
    for(i=0;i<10;i++){
        for(j=i+1;j<10;j++){
            if(b[i]>b[j]){
                k=b[i];
                b[i]=b[j];
                b[j]=k;
            }
        }
    }
    /* Ispisivanje sortiranih nizova */
    printf("\nSortiran prvi niz: ");
    for(i=0;i<10;i++){
        printf("%d ", a[i]);
    }
    printf("\nSortiran drugi niz: ");
    for(i=0;i<10;i++){
        printf("%d ", b[i]);
    }
    printf("\n");
}
[ Sephiroth? @ 02.01.2008. 18:43 ] @
Prvo, podijeli ove rand() vrijednosti da dobijes neke manje brojeve...
Drugo, zasto pri sabiranju trebas 3 petlje, kada se sve rijesi sa jednom?

Code:


#include<stdio.h>

int main()
{
    int a[10];
    int b[10];
    int c[5];
    int i;
    int j;
    int k;

    /* Unosenje clanova niza */
    for(i=0;i<10;i++){
        a[i]=rand() % 30;
    }
    for(i=0;i<10;i++){
        b[i]=rand() % 30;
    }

    /* Ispisivanje nizova */
    printf("\nPrvi niz: ");
    for(i=0;i<10;i++){
        printf("%d ", a[i]);
    }

    printf("\nDrugi niz: ");
    for(i=0;i<10;i++){
        printf("%d ", b[i]);
    }
    printf("\n");

    /* Sabiranje nizova */
    for(i=0;i<5;i++){
     c[i]=a[i]+b[i];
    }
    
    printf("\nZbir prvih pet clanova nizova je: ");
    for(i=0;i<5;i++){
        printf("%d ", c[i]);
    }


    /* Sortiranje niza */
    printf("\n");
    for(i=0;i<10;i++){
        for(j=i+1;j<10;j++){
            if(a[i]>a[j]){
                k=a[i];
                a[i]=a[j];
                a[j]=k;
            }
        }
    }
    for(i=0;i<10;i++){
        for(j=i+1;j<10;j++){
            if(b[i]>b[j]){
                k=b[i];
                b[i]=b[j];
                b[j]=k;
            }
        }
    }
    /* Ispisivanje sortiranih nizova */
    printf("\nSortiran prvi niz: ");
    for(i=0;i<10;i++){
        printf("%d ", a[i]);
    }
    printf("\nSortiran drugi niz: ");
    for(i=0;i<10;i++){
        printf("%d ", b[i]);
    }
    printf("\n");
}


[ xeron @ 02.01.2008. 19:08 ] @
Prvo za funkciju rand potreban je header #include <stdlib.h>.
Kada koristis rand() funkciju imas mogucnost da ogranicis opseg "biranja brojeva".

Code:

/* Unosenje clanova niza */
    for(i=0;i<10;i++){
        a[i]=rand() %99;
    }
    for(i=0;i<10;i++){
        b[i]=rand() %99;
    }

Ovako u nizu se mogu naci brojevi 0 - 99.
U tvom slucaju nije bilo ogranicenja i samim tim su i brojevi bili ogromni. Jer kada stavis rand() bez ogranicenja u nizu se mogao naci bilo koji broj koji moze stati u int.
[ NooND @ 03.01.2008. 10:44 ] @
Hvala
[ heheh @ 15.01.2008. 01:29 ] @
samo mali dodatak
rand() %99
daje ostatke pri djeljenju s 99, znaci brojeve 0-98

i prije toga stavis srand(time(0));
tako da ne dobivas uvik iste brojeve...:)
[ butcher87 @ 16.01.2008. 15:43 ] @
Citat:
heheh:
i prije toga stavis srand(time(0));
tako da ne dobivas uvik iste brojeve...:)


Ili:
Code:

srand((unsigned) time (NULL));

:)
[ Eurora3D Team @ 19.01.2008. 00:05 ] @
Izvlacenje i sabiranje nizova mozes da uradis u jednoj for petlji
Code:

#include<iostream.h>
int main()
{
    int a[10];
    int b[10];
    int c[5];
    int i;
    int j;
    int k;

    /* Unosenje clanova niza  & sabiranje */
    for(i=0;i<10;i++)
    {
        a[i] = rand() %100;
        b[i] = rand() %100;
        if (i<5)
            c[i]=a[i]+b[i];
    }
    /* Ispisivanje nizova */
    printf("\nPrvi niz: ");
    for(i=0;i<10;i++)
        printf("%d ", a[i]);
    printf("\nDrugi niz: ");
    for(i=0;i<10;i++)
        printf("%d ", b[i]);
    printf("\n");
    printf("\nZbir prvih pet clanova nizova je: ");
    for(i=0;i<5;i++)
        printf("%d ", c[i]);

    /* Sortiranje niza */
    printf("\n");
    for(i=0;i<10;i++)
    {
        for(j=i+1;j<10;j++)
        {
            if(a[i]>a[j])
            {
                k=a[i];
                a[i]=a[j];
                a[j]=k;
            }
        }
    }
    for(i=0;i<10;i++)
    {
        for(j=i+1;j<10;j++)
        {
            if(b[i]>b[j])
            {
                k=b[i];
                b[i]=b[j];
                b[j]=k;
            }
        }
    }

    /* Ispisivanje sortiranih nizova */
    printf("\nSortiran prvi niz: ");
    for(i=0;i<10;i++)
        printf("%d ", a[i]);

    printf("\nSortiran drugi niz: ");
    for(i=0;i<10;i++)
        printf("%d ", b[i]);
    printf("\n");

    return 0;
}