#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void vypis_pole(int pole[], int dlzka) {
    int i = 0;
    for(; i < dlzka; i++) {
        printf("%d ", pole[i]);
    }
}

/**
 * Vrati pole na pointer cisiel, ktoreho
 * prvy prvok obsahuje dlzku pola.
 *
 * Priklad: vysledok 3 12 15
 * indikuje pointer na pole s dvoma prvkami
 * (3 na zaciatku je celkovy pocet prvkov v poli);
 *
 */
int * len_kladne(int pole[], int dlzka) {
    int i = 0;
    int j = 1;
    int * nove_pole = NULL;
    int pocet_kladnych = 0;

    for(; i < dlzka; i++) {
        if(pole[i] > 0) {
            pocet_kladnych++;
        }
    }

    nove_pole = calloc(pocet_kladnych + 1, sizeof(int));
    for(i = 0; i < dlzka; i++) {
        if(pole[i] > 0) {
            nove_pole[j] = pole[i];
            j++;
        }
    }
    nove_pole[0] = pocet_kladnych + 1;

    return nove_pole;
}

int main(int argc, char** argv) {
	int DLZKA_POLA = 5;
	int pole[] = {12, -5, -2, 10, 0};
	int * len_kladne_cisla = NULL;

	/* dvojfazova inicializacia pouzivana preto,
	 * lebo premennu v ANSI C nemozno inicializovat
	 * dynamickym vyrazom (len konstantou)
	 */
    len_kladne_cisla = len_kladne(pole, DLZKA_POLA);
    vypis_pole(len_kladne_cisla, len_kladne_cisla[0]);


    return EXIT_SUCCESS;
}


