Guest User

Untitled

a guest
Feb 16th, 2019
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.69 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. float premeans1=0,premeans2=0;
  5. int count=0;
  6. float findMean(int arr[],int num){
  7. float sum=0;
  8. for(int i=0;i<num;i++){
  9. sum+=arr[i];
  10. }
  11. return sum/num;
  12. }
  13. void findObjection(int c1[],int c2[],float mean1,float mean2,int cn1,int cn2){
  14. float sum1=0,sum2=0;
  15. printf("nCluster 1: %dn",cn1);
  16. for(int i=0;i<cn1;i++){
  17. sum1+= fabsf(c1[i]-mean1);
  18. printf("%d ",c1[i]);
  19. }
  20. printf("nCluster 2: %dn",cn2);
  21. for (int i = 0; i < cn2; ++i) {
  22. sum2+=fabsf(c2[i]-mean2);
  23. printf("%d ",c2[i]);
  24. }
  25. printf("nMinimum objective function Value: %fn",sqrtf(sum1+sum2));
  26. }
  27. float calculateDistance(float n1,float n2){
  28. if(n1>n2){
  29. return n1-n2;
  30. } else{
  31. return n2-n1;
  32. }
  33. }
  34. void findCluster(int data[],int c1[],int c2[],int n,float cp1,float cp2){
  35. float diff1,diff2;
  36. int cn1=0,cn2=0;
  37. float mean1,mean2;
  38. for(int i=0;i<n;i++){
  39. diff1 = calculateDistance(cp1,data[i]);
  40. diff2 = calculateDistance(cp2,data[i]);
  41. if(diff1<diff2){
  42. c1[cn1++]=data[i];
  43. }else{
  44. c2[cn2++]=data[i];
  45. }
  46. }
  47. mean1 = findMean(c1,cn1);
  48. mean2 = findMean(c2,cn2);
  49. count++;
  50. if(premeans1==mean1 || premeans2==mean2){
  51. findObjection(c1,c2,mean1,mean2,cn1,cn2);
  52. printf("nTotal Count: %dn",count);
  53. return;
  54. }
  55. premeans1=mean1;
  56. premeans2=mean2;
  57. findCluster(data,c1,c2,n,mean1,mean2);
  58. }
  59. int main() {
  60. int n;
  61. printf("Enter number of datapoints: ");
  62. scanf("%d",&n);
  63. int data[n];//={515,648,521,759,846,512,621,555,854,315,489,765,915,486,498,500,895,154,359,814};
  64. int k=2;
  65. int c1[n],c2[n];
  66. for(int i=0;i<n;i++){
  67. scanf("%d",&data[i]);
  68. }
  69. int cp1,cp2;
  70. printf("Enter cluster1: ");//cp1=515 and cp2=814
  71. scanf("%d",&cp1);
  72. printf("Enter cluster2: ");
  73. scanf("%d",&cp2);
  74. findCluster(data,c1,c2,n,cp1,cp2);
  75. return 0;
  76. }
  77.  
  78. #include <stdio.h>
  79. #include <stdlib.h>
  80.  
  81. int main(int argc, char ** argv)
  82. {
  83. if (argc == 2) {
  84. int k;
  85.  
  86. if ((sscanf(argv[1], "%d", &k) == 1) && (k >= 1)) {
  87. /* allocate the array to group the k arrays */
  88. int ** k_arrays = malloc(k * sizeof(int *));
  89.  
  90. if (k_arrays == NULL) {
  91. puts("not enough memory");
  92. return -1;
  93. }
  94.  
  95. /* allocate all the k arrays, here to contains k int */
  96. for (int i = 0; i != k; ++i) {
  97. if ((k_arrays[i] = malloc(k * sizeof(int))) == NULL) {
  98. puts("not enough memory");
  99. return -1;
  100. }
  101. }
  102.  
  103. puts("allocations done");
  104. }
  105. }
  106.  
  107. return 0;
  108. }
  109.  
  110. pi@raspberrypi:/tmp $ gcc -pedantic -Wextra k.c
  111. pi@raspberrypi:/tmp $ ./a.out 12
  112. allocations done
Add Comment
Please, Sign In to add comment