Advertisement
Guest User

Untitled

a guest
Jun 16th, 2019
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.20 KB | None | 0 0
  1. char* userNumbers = (char*)malloc(capacity * sizeof(char));
  2. char** realNumStr = (char**)malloc(capacity * sizeof(char*));
  3. double* realNumDouble = (double*)malloc(capacity * sizeof(double));
  4. double* realNumDoubleFinal = (double*)malloc(capacity * sizeof(double));
  5.  
  6. if (userNumbers == NULL || realNumDouble == NULL || realNumDoubleFinal == NULL || realNumStr == NULL)
  7. {
  8. printf("insufficient Memory");
  9. exit(1);
  10. }
  11.  
  12. //char userNumbers[1000] = { "" };
  13. char* contextString[1] = { "" };
  14.  
  15. size_t size = 0;
  16.  
  17. int counter = 0;
  18. int counter2 = 0;
  19. int finalARRAY = 0;
  20.  
  21. //Title
  22. printf("Enter white-space separated real numbers. Terminate input with ^Zn");
  23.  
  24.  
  25. //User's input
  26. while (gets(userNumbers))
  27. //while (scanf_s("%s", userNumbers, 500) != 0)
  28. {
  29. size += strlen(userNumbers);
  30.  
  31. while (size >= capacity)
  32. {
  33. capacity = size * 2;
  34.  
  35. char * userNumbers2 = realloc(userNumbers, capacity * sizeof (char));
  36. char ** realNumStr2 = realloc(realNumStr, capacity * sizeof (char*));
  37. double * realNumDouble2 = realloc(realNumDouble, capacity * sizeof(double));
  38. double * realNumDoubleFinal2 = realloc(realNumDoubleFinal, capacity * sizeof(double));
  39.  
  40. if (userNumbers2 == NULL || realNumDouble2 == NULL || realNumDoubleFinal2 == NULL || realNumStr2 == NULL)
  41. {
  42. free(userNumbers);
  43. free(realNumDouble);
  44. free(realNumDoubleFinal);
  45. free(realNumStr);
  46.  
  47. printf("insufficient Memory");
  48. return NULL;
  49. }
  50. userNumbers = userNumbers2;
  51. realNumStr = realNumStr2;
  52. realNumDouble = realNumDouble2;
  53. realNumDoubleFinal = realNumDoubleFinal2;
  54. }
  55.  
  56. counter = 0;
  57. //Splitting the char array and cloning it to a Double Array.
  58. char* split = strtok_s(userNumbers, " ", contextString);
  59. while (split != NULL)
  60. {
  61. realNumStr[counter] = split;
  62. realNumDouble[counter] = atof(split);
  63. split = strtok_s(NULL, " ", contextString);
  64. counter++;
  65. }
  66.  
  67. //Error tests
  68. for(int i = 0; i < counter; ++i)
  69. {
  70. int dotCount = 0;
  71. counter2++;
  72.  
  73. for (int j = 0; j < strlen(realNumStr[i]); ++j)
  74. {
  75. //Checking if there is more than one '.' on the line.
  76. if (realNumStr[i][j] == '.')
  77. {
  78. dotCount++;
  79. if (dotCount > 1)
  80. {
  81. failureElement(realNumStr, i, counter2);
  82. freeAll(userNumbers, realNumStr, realNumDoubleFinal, realNumDouble);
  83. return EXIT_FAILURE;
  84. }
  85. }
  86. //Making sure to read 0.
  87. else if ((realNumStr[i][j] == '0') || ((realNumStr[i][0] == '-' && realNumStr[i][1] == '0')))
  88. {
  89. break;
  90. }
  91. //Checking if it is a number.
  92. else if((realNumDouble[i] != 0))
  93. {
  94. for(int k = 1; k < strlen(realNumStr[i]); ++k)
  95. {
  96. //Handling '-' as a non valid input (--1, -1-).
  97. if ((realNumStr[i][k] == '-' || isalpha(realNumStr[i][k])))
  98. {
  99. failureElement(realNumStr, i, counter2);
  100. freeAll(userNumbers, realNumStr, realNumDoubleFinal, realNumDouble);
  101. return EXIT_FAILURE;
  102. }
  103. }
  104. }
  105. else
  106. {
  107. failureElement(realNumStr, i, counter2);
  108. freeAll(userNumbers, realNumStr, realNumDoubleFinal, realNumDouble);
  109. return EXIT_FAILURE;
  110. }
  111. }
  112. }
  113.  
  114. //Final Double Array for the calculations.
  115. for (int j = 0; j < counter;++j)
  116. {
  117. realNumDoubleFinal[finalARRAY++] = realNumDouble[j];
  118. }
  119. };
  120.  
  121. //Checking if data set is empty.
  122. if (userNumbers[0] == '') {
  123. freeAll(userNumbers, realNumStr, realNumDoubleFinal, realNumDouble);
  124. printf("Data set is empty!n");
  125. return EXIT_FAILURE;
  126. }
  127.  
  128. //Standard Analysis
  129. printf("nStandard Analysisn");
  130.  
  131. doubleLine();
  132.  
  133. printf("n# elements = %d", counter2);
  134. printf("nRange = [%g .. %g]", rangeMin(realNumDoubleFinal, counter2), rangeMax(realNumDoubleFinal, counter2));
  135. printf("nArithmetic median = %g", median(realNumDoubleFinal, counter2));
  136. printf("nArithmetic mean = %g", mean(realNumDoubleFinal, counter2));
  137.  
  138. int modeValues[2] = { 0 };
  139. if (mode(realNumDoubleFinal, counter2, modeValues) == 0) {
  140. printf("nMode = no mode");
  141. }
  142. else {
  143. printf("nMode = { %d }%dx", modeValues[0], modeValues[1]);
  144. }
  145.  
  146. double sampleVariance = variance(realNumDoubleFinal, counter2);
  147. printf("nVariance = %g", sampleVariance);
  148.  
  149. printf("nStandard Deviation = %g", standarDeviation(sampleVariance));
  150. printf("nnLinear Line Regression : slope = , Y - Intercept = n");
  151. doubleLine();
  152.  
  153. //Frequency Table
  154. printf("nnFrequency Table");
  155. printf("n---------------n");
  156.  
  157. doubleLine();
  158.  
  159. //xxxxxxxxxxxxxxxxxxx
  160. //Frequency Histogram
  161. //xxxxxxxxxxxxxxxxxxx
  162. printf("nnnFrequency Histogramn");
  163. doubleLine();
  164. printf("nGrp %% 0");
  165. //Numbers in the Histogram
  166. for(int i=0;i<11;++i)
  167. {
  168. printf("%6.1lf", 1.0);
  169. }
  170.  
  171. printf("n");
  172. singleLine(1);
  173.  
  174. //Graphic Lines
  175. printf("xDA");
  176. for (int i = 0; i < 11; ++i)
  177. {
  178. printf("xC4xC4xC4xC4xC4xC2");
  179. }
  180. printf("n");
  181. //Letters,Numbers and Graphic Lines.
  182. char letter = 'A';
  183.  
  184.  
  185. for (int i = 0; i < 10; ++i)
  186. {
  187. printf("%c %5.2lf%% xB3",letter++,10.00);
  188.  
  189. //SQUARES
  190. for(int j = 0; j < 65; ++j)
  191. {
  192. printf("X");
  193. }
  194. printf("n");
  195. }
  196.  
  197. singleLine(1);
  198. printf("xC0");
  199.  
  200. //Graphic Lines
  201. for (int i = 0; i < 11; ++i)
  202. {
  203. printf("xC4xC4xC4xC4xC4xC1");
  204. }
  205. printf("n");
  206.  
  207. //xxxxxxxxxx
  208. //Box Plot
  209. //xxxxxxxxxx
  210. printf("nBox Plotn");
  211. doubleLine();
  212.  
  213. printf("nIdx 0");
  214. //Numbers in the Histogram
  215. for (int i = 0; i < 11; ++i)
  216. {
  217. printf("%6.1lf", 1.0);
  218. }
  219.  
  220. printf("n");
  221. singleLine(0);
  222.  
  223. //Graphic Lines
  224. printf("xDA");
  225. for (int i = 0; i < 11; ++i)
  226. {
  227. printf("xC4xC4xC4xC4xC4xC2");
  228.  
  229. }
  230. printf("n");
  231.  
  232. //Letters,Numbers and Graphic Lines.
  233. for (int i = 0; i < 10; ++i)
  234. {
  235. printf(" %d xB3", 1);
  236.  
  237. //SQUARES
  238. for (int j = 0; j < 65; ++j)
  239. {
  240. printf("X");
  241. }
  242. printf("n");
  243. }
  244. singleLine(0);
  245.  
  246. //Graphic Lines
  247. printf("xC0");
  248. for (int i = 0; i < 11; ++i)
  249. {
  250. printf("xC4xC4xC4xC4xC4xC1");
  251. }
  252. printf("n");
  253.  
  254. //If Succeded
  255. freeAll(userNumbers, realNumStr, realNumDoubleFinal, realNumDouble);
  256. return EXIT_SUCCESS;
  257.  
  258. double hold = dbArray[0];
  259. for (int i = 0; i < size; ++i)
  260. {
  261. if (dbArray[i] < hold)
  262. {
  263. hold = dbArray[i];
  264. }
  265. }
  266.  
  267. return hold;
  268.  
  269. double hold = dbArray[0];
  270. for (int i = 0; i < size; ++i)
  271. {
  272. if (dbArray[i] > hold)
  273. {
  274. hold = dbArray[i];
  275. }
  276. }
  277.  
  278. return hold;
  279.  
  280. return hold / size;
  281.  
  282. return dbArray[((size) / 2)];
  283.  
  284. for (i = 0; i < size; ++i) {
  285. count = 0;
  286.  
  287. for (j = 0; j < size; ++j) {
  288. if (dbArray[j] == dbArray[i]) {
  289. ++count;
  290. if (count == 1) {
  291. count1++;
  292. }
  293. else if (count == 2) {
  294. count2++;
  295. }
  296. }
  297. }
  298.  
  299. if (count > maxCount) {
  300. maxCount = count;
  301. maxValue = dbArray[i];
  302. }
  303. }
  304. if (maxCount == 1 || (count1 == count2)) {
  305. return 0;
  306. }
  307.  
  308. modeValues[0] = maxValue;
  309. modeValues[1] = maxCount;
  310.  
  311. return;
  312.  
  313. return (1 / (double)size) * sum2;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement