sobota, 3 marca 2018

Using malloc-free in a dynamic tables (gcc)


Each number can be shown as the sum of prime numbers.
I used several tables and a primitive algorithm.

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 1000
#define TEST 10


void Sort(int *table, int size)
{
    int i,j,tmp;
    for(i=1;i<size;i++)
    {
        j=i;
        tmp=table[j];
        while((j>0) && (table[j-1]>tmp))
        {
            table[j]=table[j-1];
            j--;
        }
        table[j]=tmp;
    }
}
int is_First(int value)
{
    int i,sum;
    sum=0;
    for(i=1;i<value+1;i++)
        if(value%i==0)
         ++sum;
    if(sum==2)
        return 1;
    else
        return 0;
}
int *table;
int *test_table;
int **result_table;

void init_Table()
{
    int i,j;
    result_table= (int**)malloc(TEST*sizeof(int*));
    for(i=0;i<TEST;i++)
        result_table[i]=(int*)malloc(TEST*sizeof(int));
    test_table=(int*)malloc((TEST+1)*sizeof(int));
    table=(int*)malloc((MAX+1)*sizeof(int));
    i=0;
    j=2;
    do
    {
        if(is_First(j))
        {
            table[i]=j;
            ++i;
        }
        ++j;

    }while(i<MAX);
    for(i=0;i<TEST;i++)
        test_table[i]=TEST*50+rand()%TEST*5;

}
void free_Table()
{

    int i;
    free(table);
    free(test_table);
    for(i=0;i<TEST;i++)
        free(result_table[i]);
    free(result_table);
}
int main()
{
    int i,j,k,sum;
    srand(time(NULL));
    init_Table();
    i=0;
    do
    {
        do
        {
         sum=0;

         for(j=0;j<TEST;j++)
         {
          k=rand()%TEST*5;
          result_table[i][j]=table[k];
          sum+=table[k];
         }
         }while(test_table[i]!=sum);


        ++i;

    }while(i<TEST);

    for(i=0;i<TEST;i++)
    {
        Sort(result_table[i],TEST);
    }

    for(i=0;i<TEST;i++)
    {

        printf("%d  = \n",test_table[i]);
        for(j=0;j<TEST;j++)
        {
            printf("%d,  ",result_table[i][j]);
        }
        printf("\n");
    }

    free_Table();


    getch();
    return 0;
}


Brak komentarzy:

Prześlij komentarz