Advertisement
Guest User

Untitled

a guest
Dec 14th, 2019
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.17 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <windows.h>
  4.  
  5. void sortArrayLowToBig(long input[], long length)
  6. {
  7. for (long i = 0; i < length; i++)
  8. {
  9. for (long k = 0; k < length; k++)
  10. {
  11. long temp = input[k];
  12. if (input[k] > input[k + 1])
  13. {
  14. input[k] = input[k + 1];
  15. input[k + 1] = temp;
  16. }
  17. }
  18. }
  19. }
  20. long stringLength(char string[])
  21. {
  22. long len = 0;
  23. for (long i = 0; i <= 512; i++)
  24. {
  25. if (string[i] == '\0')
  26. {
  27. return len;
  28. }
  29. len++;
  30. }
  31. }
  32. long stringToInt(char string[])
  33. {
  34. long mul = 1;
  35. long outNum = 0, positive = 1;
  36. long length = stringLength(string);
  37. for (long i = length - 1; i >= 0; i--)
  38. {
  39. if (string[i] == 45)
  40. {
  41. positive = -1;
  42. }
  43. else
  44. {
  45. outNum += (string[i] - 48) * mul;
  46. mul *= 10;
  47. }
  48. }
  49. return outNum * positive;
  50. }
  51. long validatedIntInput(char string[])
  52. {
  53. //проверява дали е инт по ascii
  54. long length = stringLength(string);
  55. for (long i = 0; i < length; i++)
  56. {
  57. if (string[i] < 48 && string[i] > 57)
  58. {
  59. return -1;
  60. }
  61. }
  62. return stringToInt(string);
  63. }
  64. void newArray(long vhod[], long sortedArray[], int &sortedArrayLenght)
  65. {
  66. int smallesNum = vhod[0];
  67. int mqstoVInput = 0;
  68. int count = 0;
  69. for (int i = 1; i < 100; i++)
  70. {
  71. if (vhod[i] < smallesNum)
  72. {
  73. smallesNum = vhod[i];
  74. mqstoVInput = i+1;
  75. }
  76. }
  77. for (int y = mqstoVInput; y < 100; y++)
  78. {
  79. sortedArray[count] = vhod[y];
  80. count++;
  81. }
  82. sortedArrayLenght = count;
  83. }
  84. void startMenu(long vhod[], int &NumsCounter)
  85. {
  86. system("CLS");
  87. int naiGolqmaNechetnaCifra = 1;
  88. int edinici = 0;
  89. int troiki = 0;
  90. int petici = 0;
  91. int sedmici = 0;
  92. int devqtki = 0;
  93. int chislo;
  94. char inputString[128];
  95. for (long i = 0; i <= 99; i++)
  96. {
  97. //printf("You must enter %d more numbers : \n", 100 - i);
  98. //scanf("%s", &inputString);
  99. chislo = rand(); //!!! ред 99 и 100 ти генерират масив от 100 елемента за да не си играеш да го
  100. itoa(chislo, inputString, 10); //въвеждаш сам , 97 и 98 са ти стандртния вход но са сложени като коментари за да не го вкарваш на ръка а автоматично.
  101. for (int y = 0; y < 128; y++) //Боря нечетни цифри
  102. { //след което най-голямата
  103. if (inputString[y] != '\0') //срещната нечетна цифра
  104. { //присвоявам колко пъти съм срещнал
  105. if (inputString[y] == '1')
  106. {
  107. edinici++;
  108. }
  109. else if (inputString[y] == '3')
  110. {
  111. troiki++;
  112. }
  113. else if (inputString[y] == '5')
  114. {
  115. petici++;
  116. }
  117. else if (inputString[y] == '7')
  118. {
  119. sedmici++;
  120. }
  121. else if (inputString[y] == '9')
  122. {
  123. devqtki++;
  124. }
  125. }
  126. else y = 128;
  127. }
  128. if (devqtki > 0) NumsCounter = devqtki;
  129. else if (sedmici > 0) NumsCounter = sedmici;
  130. else if (petici > 0) NumsCounter = petici;
  131. else if (troiki > 0) NumsCounter = troiki;
  132. else if (edinici > 0) NumsCounter = edinici;
  133. vhod[i] = validatedIntInput(inputString);
  134. system("CLS");
  135. }
  136. }
  137. void saveFile(long vhod[100], int &lineWithLowestNegNum)
  138. {
  139. system("CLS");
  140. char inputName[128];
  141. int a = 100 / 8;
  142. int b = 100 % 8;
  143. long smallestNeg = 0;
  144. printf("Enter file name : \n");
  145. scanf("%s", &inputName);
  146.  
  147. FILE* file;
  148. file = fopen(inputName, "w+");
  149.  
  150. if (file)
  151. {
  152. for (long i = 0; i < a ; i++)
  153. {
  154. fprintf(file, "%i %i %i %i %i %i %i %i\n",
  155. vhod[i * 8], vhod[i * 8 + 1], vhod[i * 8 + 2], vhod[i * 8 + 3],
  156. vhod[i * 8 + 4], vhod[i * 8 + 5], vhod[i * 8 + 6], vhod[i * 8 + 7]);
  157. if(vhod[i * 8] < 0 && vhod[i * 8] <= smallestNeg)
  158. {
  159. smallestNeg = vhod[i * 8];
  160. lineWithLowestNegNum = i + 1;
  161. }
  162. if (vhod[i * 8 +1] < 0 && vhod[i * 8+1] <= smallestNeg)
  163. {
  164. smallestNeg = vhod[i * 8+1];
  165. lineWithLowestNegNum = i + 1;
  166. }
  167. if (vhod[i * 8+2] < 0 && vhod[i * 8+2] <= smallestNeg)
  168. {
  169. smallestNeg = vhod[i * 8+2];
  170. lineWithLowestNegNum = i + 1;
  171. }
  172. if (vhod[i * 8+3] < 0 && vhod[i * 8+3] <= smallestNeg)
  173. {
  174. smallestNeg = vhod[i * 8+3];
  175. lineWithLowestNegNum = i + 1;
  176. }
  177. if (vhod[i * 8+4] < 0 && vhod[i * 8+4] <= smallestNeg)
  178. {
  179. smallestNeg = vhod[i * 8+4];
  180. lineWithLowestNegNum = i + 1;
  181. }
  182. if (vhod[i * 8+5] < 0 && vhod[i * 8+5] <= smallestNeg)
  183. {
  184. smallestNeg = vhod[i * 8+5];
  185. lineWithLowestNegNum = i + 1;
  186. }
  187. if (vhod[i * 8+6] < 0 && vhod[i * 8+6] <= smallestNeg)
  188. {
  189. smallestNeg = vhod[i * 8+6];
  190. lineWithLowestNegNum = i + 1;
  191. }
  192. if (vhod[i * 8+7] < 0 && vhod[i * 8+7] <= smallestNeg)
  193. {
  194. smallestNeg = vhod[i * 8+7];
  195. lineWithLowestNegNum = i + 1;
  196. }
  197.  
  198. }
  199. if (b > 0)
  200. {
  201. for (int c = 0; c < b; c++)
  202. {
  203. fprintf(file, "%i ", vhod[(100 - b) + c]);
  204. }
  205. }
  206. fprintf(file, "\n %i \n", lineWithLowestNegNum);
  207. }
  208. else
  209. {
  210. printf("file could not be found or created");
  211. }
  212.  
  213. fclose(file);
  214. }
  215. void loadFile(long vhod[100], int &lineWithLowestNegNum)
  216. {
  217. system("CLS");
  218. char inputFileName[256];
  219. int counting8s = 0;
  220. printf("Enter file name : ");
  221. scanf("%s", &inputFileName);
  222.  
  223. char num[255];
  224. char num1[255];
  225. char num2[255];
  226. char num3[255];
  227. char num4[255];
  228. char num5[255];
  229. char num6[255];
  230. char num7[255];
  231. char lines[5];
  232.  
  233. FILE* file = fopen(inputFileName, "r");
  234.  
  235. for (long i = 0; i < (100/8); i++)
  236. {
  237. fscanf(file, "%s %s %s %s %s %s %s %s\n", num, num1, num2, num3, num4, num5, num6, num7);
  238.  
  239. vhod[i * 8] = validatedIntInput(num);
  240. vhod[i * 8 + 1] = validatedIntInput(num1);
  241. vhod[i * 8 + 2] = validatedIntInput(num2);
  242. vhod[i * 8 + 3] = validatedIntInput(num3);
  243. vhod[i * 8 + 4] = validatedIntInput(num4);
  244. vhod[i * 8 + 5] = validatedIntInput(num5);
  245. vhod[i * 8 + 6] = validatedIntInput(num6);
  246. vhod[i * 8 + 7] = validatedIntInput(num7);
  247. }
  248. fscanf(file, "%s %s %s %s\n", num, num1, num2, num3);
  249. vhod[96] = validatedIntInput(num);
  250. vhod[97] = validatedIntInput(num1);
  251. vhod[98] = validatedIntInput(num2);
  252. vhod[99] = validatedIntInput(num3);
  253. fscanf(file, "%s \n", lines);
  254. lineWithLowestNegNum = validatedIntInput(lines);
  255.  
  256. fclose(file);
  257.  
  258. system("PAUSE");
  259. }
  260. void printArray(long vhod[100], int NumsCounter, int lineWithLowestNegNum)
  261. {
  262. system("CLS");
  263. printf("Array Elements : \n");
  264.  
  265. for (long i = 0; i <= 99; i++)
  266. {
  267. printf("%d\n", vhod[i]);
  268. }
  269. if (NumsCounter != 0)
  270. {
  271. printf("%d puti sreshtanto nechetno chislo s nai golqm ascii kod v sortiraniq masiv", NumsCounter);
  272. }
  273. if (lineWithLowestNegNum != 0)
  274. {
  275. printf("Line in which lowest negative number can be spotted: %d", lineWithLowestNegNum);
  276. }
  277.  
  278. printf("Press enter to go back to the main menu. \n");
  279. system("PAUSE");
  280. }
  281. void printNewArray(long sortedArray[],int sortedArrayLenght)
  282. {
  283. system("CLS");
  284. printf("Sorted array elements : \n");
  285.  
  286. for (long i = 0; i < sortedArrayLenght; i++)
  287. {
  288. printf("%d\n", sortedArray[i]);
  289. }
  290.  
  291. printf("Press enter to go back to the main menu. \n");
  292. system("PAUSE");
  293. }
  294. long main()
  295. {
  296. long vhod[100];
  297. long sortedArray[100];
  298. int sortedArrayLenght = 0;
  299. int lineWithLowestNegNum = 0;
  300.  
  301. int NumsCounter = 0;
  302.  
  303. long choice = 0;
  304.  
  305. while (choice != 6)
  306. {
  307. system("CLS");
  308. printf("1. Add / Change the input array.\n");
  309. printf("2. Show the input array.\n");
  310. printf("3. Show the sorted array.\n");
  311. printf("4. Save to file.\n");
  312. printf("5. Load from file.\n");
  313. printf("6. Exit.\n");
  314. scanf("%d", &choice);
  315.  
  316. if (choice == 1)
  317. {
  318. // въвеждаме или променяме масив
  319. startMenu(vhod, NumsCounter);
  320. newArray(vhod, sortedArray, sortedArrayLenght);
  321. // сортираме sortedArray
  322. sortArrayLowToBig(sortedArray, sortedArrayLenght);
  323. }
  324. else if (choice == 2)
  325. {
  326. printArray(vhod, NumsCounter, lineWithLowestNegNum);
  327. }
  328. else if (choice == 3)
  329. {
  330. printNewArray(sortedArray, sortedArrayLenght);
  331. }
  332. else if (choice == 4)
  333. {
  334. saveFile(vhod, lineWithLowestNegNum);
  335. }
  336. else if (choice == 5)
  337. {
  338. loadFile(vhod, lineWithLowestNegNum);
  339. }
  340. Sleep(50);
  341. }
  342.  
  343. return 0;
  344. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement