sobota, 6 lipca 2019

Discrete knapsack problem (C - gcc)

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define size_B 10
#define max_T 100
#define min_V 500
#define max_V 1000

int double_Arrays[size_B][size_B];
int tab_First[max_T];
int main_Values[size_B];

int sum_Array(int *tab, int size)
{
int i,sum;
sum=0;
for(i=0;i<size;i++)
sum+=tab[i];
return sum;
}
void ins_Sort(int *tab,  int size)
{
int i,j,k;
for(i=1;i<size;i++)
{
j=i;
k=tab[j];
while((j>0) && (tab[j-1]>k))
{
tab[j]=tab[j-1];
j--;
}
tab[j]=k;
}
}
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;
     
}

void init_Tab()
{
int i,j;
i=0;
j=2;
do
{
if(is_First(j))
{
tab_First[i]=j;
++i;
}
++j;

}while(i<max_T);
for(i=0;i<size_B;i++)
{
main_Values[i]=rand()%(max_V-min_V)+min_V;
}
ins_Sort(main_Values,size_B);
}
void run_Arrays()
{
int i,j,k,l;
i=0;
do
{
 do
 {
for(j=0;j<size_B;j++)
{
k=rand()%max_T;
l=tab_First[k];
double_Arrays[i][j]=l;
    }
} while(sum_Array(double_Arrays[i],size_B)!=main_Values[i]);
++i;
}while(i<size_B);
for(i=0;i<size_B;i++)
{
ins_Sort(double_Arrays[i],size_B);
}
}

int main(int argc, char **argv)
{
int i,j;
srand(time(NULL));
init_Tab();
run_Arrays();
printf("Drawn 10 numbers: (500-1000)\n");
for(i=0;i<size_B;i++)
{
printf("%d  ",main_Values[i]);
}
printf("\n\n");

printf("The sum of the ten prime numbers: ");
printf("\n");
i=0;
do
{
for(j=0;j<size_B;j++)
{
printf("%d  ",double_Arrays[i][j]);
}
printf("\n");
++i;
}while(i<size_B);

return 0;
}

Brak komentarzy:

Prześlij komentarz