vector_utils.c

#include <stdio.h>
#include <stdlib.h>
#include "vector_utils.h"
#include "tested_declarations.h"
#include "rdebug.h"

int read_vector_float(float *vec, int size, float stop_value)
{
    if(vec == NULL || size <= 0 ) return -1;
    int sizeD = 0;

    for(int i=0; i<size; i++)
    {
        if(scanf("%f", &(*(vec+i))) != 1)
        {
            return -1;
        }

        if(*(vec+0) == 0)
        {
            return 0;
        }
        sizeD++;

        if(*(vec+i) == stop_value)
        {
            sizeD--;
            break;
        }
    }
    return sizeD;
}

int create_histogram(const float *vec, int size, int *out, int out_size)
{
    if(vec == NULL || size <= 0 || out == NULL || out_size <= 0) return 1;

    memset(out, 0, 100 * sizeof(float));

    for(int j = 0; j < size; j++)
    {
        if(*(vec + j) >= 0 && *(vec + j) < 1 )
        {
            *(out + 0) += 1;
        }
        if(*(vec + j) >= 1 && *(vec + j) < 2 )
        {
            *(out + 1) += 1;
        }
        if(*(vec + j) >= 2 && *(vec + j) < 3 )
        {
            *(out + 2) += 1;
        }
        if(*(vec + j) >= 3 && *(vec + j) < 4 )
        {
            *(out + 3) += 1;
        }
        if(*(vec + j) >= 4 && *(vec + j) < 5 )
        {
            *(out + 4) += 1;
        }
        if(*(vec + j) >= 5 && *(vec + j) < 6 )
        {
            *(out + 5) += 1;
        }
        if(*(vec + j) >= 6 && *(vec + j) < 7 )
        {
            *(out + 6) += 1;
        }
        if(*(vec + j) >= 7 && *(vec + j) < 8 )
        {
            *(out + 7) += 1;
        }
        if(*(vec + j) >= 8 && *(vec + j) < 9 )
        {
            *(out + 8) += 1;
        }
        if(*(vec + j) >= 9 && *(vec + j) < 10 )
        {
            *(out + 9) += 1;
        }
        if(*(vec + j) >= 10 && *(vec + j) < 11 )
        {
            *(out + 10) += 1;
        }
    }
    return 0;
}

void display_vector(const int* tab, int size)
{
    int i;
    for(i=0; i<size; i++)
    {
        printf("%d ", *(tab+i));
    }
}