zad2kolokvijum_V4.c


/* 2. Niz (maks 20). Ucitaj niz.
Da li ima vise poz ili neg brojeva u nizu.
Ako ima vise poz onda sve neg pretvoriti u poz.
Obrnuto, sve poz u neg.
Ako ih ima jednako onda ostavi isti niz.
Ispisi niz.
Za maks broj bodova u ovom treba napisati funkcije,
koje ce gledati koliko ima poz i neg u nizu. -Dzunja citat*/

#include <stdio.h>
#include <stdlib.h>

#define MAX 20
#define POZITIVNO 65  //A
#define NEGATIVNO 66  //B
#define JEDNAKO 67    //C

char brojacZnaka(int niz[], int n);
void ispisNiza(int niz[], int n);
void pretvaracZnaka(int niz[], int n, char znak);

int main()
{
    int niz[MAX] = {0};
    int n;

    do
    {
        printf("Unesite n:");
        scanf("%d", &n);
    }
    while(n <= 0 || n > 20);

    printf("\nUnesite clanove niza:\n");

    for(int i = 0; i < n; i++)
    {
        printf("n[%d]:", i + 1);
        scanf("%d", &niz[i]);
        printf("\n");
    }

    pretvaracZnaka(niz, n, brojacZnaka(niz, n));

    return 0;
}


char brojacZnaka(int niz[], int n)
{
    int brPozitivnih = 0;
    int brNegativnih = 0;

    for(int i = 0; i < n; i++)
    {
        if(niz[i] > 0)
        {
            brPozitivnih++;
        }
        else if(niz[i] < 0)
        {
            brNegativnih++;
        }
    }
    if(brPozitivnih == brNegativnih)
    {
        //ispisNiza(niz, n);
        return JEDNAKO;
    }
    else if(brPozitivnih > brNegativnih)
    {
        return POZITIVNO;

    }
    else if(brPozitivnih < brNegativnih)
    {
        return NEGATIVNO;
    }
}

void ispisNiza(int niz[], int n)
{
    printf("\n\n");

    for(int i = 0; i < n; i++)
    {
        printf("n[%d]: %d\n", i+1, niz[i]);
    }
}


void pretvaracZnaka(int niz[], int n, char znak)
{
    switch(znak)
    {
        case POZITIVNO:
        {
            for(int i = 0; i < n; i++)
            {
                if(niz[i] < 0)
                {
                    niz[i] = niz[i] * (-1);
                }
            }
            ispisNiza(niz, n);
        }
        break;
        case NEGATIVNO:
        {
            for(int i = 0; i < n; i++)
            {
                if(niz[i] > 0)
                {
                    niz[i] = niz[i] * (-1);
                }
            }
            ispisNiza(niz, n);
        }
        break;
        case JEDNAKO:
        {
            ispisNiza(niz, n);
        }
        break;
        default:
            {
                ispisNiza(niz, n);
            }
    }
}