joannakr

Untitled

Jan 8th, 2019
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.16 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. #include <Windows.h>
  6.  
  7. int Readfiletofile();
  8. int Readfiletoscreen();
  9. int Readceyboardtofile();
  10. int Readceyboardtoscreen();
  11. void logicalCounter(FILE* inputStream, FILE* outputStream);
  12. void linescounter(FILE* inputStream, FILE* outputStream);
  13. int main()
  14. {
  15. int choice;
  16. SetConsoleOutputCP(1251);
  17. SetConsoleCP(1251);
  18. printf(" Меню:\n");
  19. printf("1:четене програмата от файл и запис на резултата във файл\n(потребителят трябва да въведе имената на двата файла, като файла с програмата трябва да завършва с '.С')\n\n");
  20. printf("2:четене програмата от файл и извеждане на резултата на екрана\n(файлът въведен от потребителят трябва да завършва на '.С')\n\n");
  21. printf("3:четене на програмата от клавиатура и извеждане във файл зададен от потребителя\n\n");
  22. printf("4:четене на програмата от клавиатурата и извеждане на екрана\n\n");
  23. printf("Напишете вашия избор:");
  24. scanf("%d", &choice); //фактически параметър
  25. switch (choice)
  26. {
  27. case 1:
  28. system("cls");
  29. Readfiletofile();
  30. printf("Резултатите са във файла");
  31. break;
  32. case 2:
  33. system("cls");
  34. Readfiletoscreen();
  35. break;
  36. case 3:
  37. system("cls");
  38. Readceyboardtofile();
  39. printf("Резултатите са във файла");
  40. break;
  41. case 4:
  42. system("cls");
  43. Readceyboardtoscreen();
  44. break;
  45. default:
  46. printf("ГРЕШКА!");
  47. }
  48. system("pause");
  49. return 0;
  50. }
  51. int Readfiletofile()
  52. {
  53. char line[300];
  54. int string_flag = 1, comment_flag = 1;
  55. int emptyLine = 0;
  56. int logical = 0;
  57. char fpname[255], newfpname[255];
  58. printf("Въведи името на файла за четене :\n");
  59. scanf("%s", fpname);
  60. printf("Въведи името на файла за запис на резултата:\n");
  61. scanf("%s", newfpname);
  62. FILE *fp = fopen(fpname, "r");
  63. if (fp == NULL)
  64. {
  65. printf("ГРЕШКА: Файлът не може да се отвори!\n");
  66. return -1;
  67. }
  68. else
  69. if (fpname[strlen(fpname) - 2] != '.'&& fpname[strlen(fpname) - 1] != 'c')
  70. {
  71. printf("ГРЕШКА: Файлът не е с правилното разширение!\n");
  72. return -1;
  73. }
  74. while (fgets(line, 300, fp))
  75. {
  76. int i = 0;
  77. int len = strlen(line);
  78. emptyLine++;
  79. for (i = 0; i < len; i++)
  80. {
  81. if ((line[i] == '"') && (line[i - 1] != '\\'))
  82. {
  83. if (string_flag == 1)
  84. string_flag--;
  85. else
  86. string_flag++;
  87. }
  88. if ((line[i] == '/') && (line[i + 1] == '/'))
  89. break;
  90. if ((line[i] == '/') && (line[i + 1] == '*'))
  91. comment_flag--;
  92. if ((line[i] == '*') && (line[i + 1] == '/'))
  93. comment_flag++;
  94.  
  95. if (line[i] != '\n' && line[i] != '\t' && line[i] != ' ')
  96. {
  97. emptyLine--;
  98. break;
  99. }
  100. }
  101. if (string_flag && comment_flag)
  102. {
  103. if (line[i] == 'f' && line[i + 1] == 'o'&&line[i + 2] == 'r' || line[i] == 'w' && line[i + 1] == 'h'&&line[i + 2] == 'i'&&line[i + 3] == 'l' && line[i + 4] == 'e'||line[i]=='d'&&line[i+1]=='o'&&line[i+2]=='{'|| line[i] == 'd'&&line[i + 1] == 'o'&&line[i + 3] == '{')
  104. {
  105. logical++;
  106. }
  107.  
  108. }
  109. }
  110. fclose(fp);
  111. if (newfpname[strlen(newfpname) - 2] != '.'&& newfpname[strlen(newfpname) - 1] != 'c')
  112. {
  113. printf("ГРЕШКА: Файлът не е с правилното разширение!\n");
  114. return -1;
  115. }
  116. FILE *newfp = fopen(newfpname, "w");
  117. if (newfp)
  118. {
  119. fprintf(newfp, "Празните редове са : %d, \n Операторите за цикъл са: %d", emptyLine, logical);
  120. }
  121. fclose(newfp);
  122. return 0;
  123. }
  124. int Readfiletoscreen()
  125. {
  126. char line[300];
  127. int string_flag = 1, comment_flag = 1;
  128. int emptyLine = 0;
  129. int logical = 0;
  130. char fpname[255], newfpname[255];
  131. printf("Въведи името на файла за четене :\n");
  132. scanf("%s", fpname);
  133. FILE *fp = fopen(fpname, "r");
  134. if (fp == NULL) {
  135. printf("ГРЕШКА: Файлът не може да се отвори!\n");
  136. return -1;
  137. }
  138. else
  139. if (fpname[strlen(fpname) - 2] != '.'&& fpname[strlen(fpname) - 1] != 'c')
  140. {
  141. printf("ГРЕШКА: Файлът не е с правилното разширение!\n");
  142. return -1;
  143. }
  144. else
  145. while (fgets(line, 300, fp))
  146. {
  147. int i = 0;
  148. int len = strlen(line);
  149. emptyLine++;
  150. for (i = 0; i < len; i++)
  151. {
  152. if ((line[i] == '"') && (line[i - 1] != '\\'))
  153. {
  154. if (string_flag == 1)
  155. string_flag--;
  156. else
  157. string_flag++;
  158. }
  159. if ((line[i] == '/') && (line[i + 1] == '/'))
  160. break;
  161. if ((line[i] == '/') && (line[i + 1] == '*'))
  162. comment_flag--;
  163. if ((line[i] == '*') && (line[i + 1] == '/'))
  164. comment_flag++;
  165.  
  166. if (line[i] != '\n' && line[i] != '\t' && line[i] != ' ')
  167. {
  168. emptyLine--;
  169. break;
  170. }
  171. }
  172. if (string_flag && comment_flag)
  173. {
  174. if (line[i] == 'f' && line[i + 1] == 'o'&&line[i + 2] == 'r' || line[i] == 'w' && line[i + 1] == 'h'&&line[i + 2] == 'i'&&line[i + 3] == 'l' && line[i + 4] == 'e' || line[i] == 'd'&&line[i + 1] == 'o'&&line[i + 2] == '{' || line[i] == 'd'&&line[i + 1] == 'o'&&line[i + 3] == '{')
  175. {
  176. logical++;
  177. }
  178.  
  179. }
  180. }
  181. printf("Празните редове са : %d, \n Операторите за цикъл са: %d", emptyLine, logical);
  182. return 0;
  183. }
  184. int Readceyboardtofile()
  185. {
  186. char line[300];
  187. int string_flag = 1, comment_flag = 1;
  188. int emptyLine = 0;
  189. int logical = 0;
  190. char newfpname[255];
  191. printf("Въведи името на файла за запис на резултата:\n");
  192. scanf("%s", newfpname);
  193. printf("Напиши програмата:(за край на програмата натиснете CTR+Z)\n");
  194. scanf("%s", &line);
  195. while (fgets(line, 300, stdin))
  196. {
  197. int i = 0;
  198. int len = strlen(line);
  199. emptyLine++;
  200. for (i = 0; i < len; i++)
  201. {
  202. if ((line[i] == '"') && (line[i - 1] != '\\'))
  203. {
  204. if (string_flag == 1)
  205. string_flag--;
  206. else
  207. string_flag++;
  208. }
  209. if ((line[i] == '/') && (line[i + 1] == '/'))
  210. break;
  211. if ((line[i] == '/') && (line[i + 1] == '*'))
  212. comment_flag--;
  213. if ((line[i] == '*') && (line[i + 1] == '/'))
  214. comment_flag++;
  215.  
  216. if (line[i] != '\n' && line[i] != '\t' && line[i] != ' ')
  217. {
  218. emptyLine--;
  219. break;
  220. }
  221. }
  222. if (string_flag && comment_flag)
  223. {
  224. if (line[i] == 'f' && line[i + 1] == 'o'&&line[i + 2] == 'r' || line[i] == 'w' && line[i + 1] == 'h'&&line[i + 2] == 'i'&&line[i + 3] == 'l' && line[i + 4] == 'e' || line[i] == 'd'&&line[i + 1] == 'o'&&line[i + 2] == '{' || line[i] == 'd'&&line[i + 1] == 'o'&&line[i + 3] == '{')
  225. {
  226. logical++;
  227. }
  228.  
  229. }
  230. }
  231. FILE *newfp = fopen(newfpname, "w");
  232. if (newfp)
  233. {
  234. fprintf(newfp, "Празните редове са : %d, \n Операторите за цикъл са: %d", emptyLine, logical);
  235. }
  236. fclose(newfp);
  237. return 0;
  238. }
  239. int Readceyboardtoscreen()
  240. {
  241. char line[300];
  242. int flag = 0, flag1 = 0;
  243. int emptyLine = 0;
  244. int logical = 0;
  245. int i = 0;
  246. printf("Напиши програмата(за край на програмата натиснете CTR+Z):\n\n");
  247. scanf("%s", &line);
  248. while (fgets(line, 300, stdin))
  249. {
  250. int len = strlen(line);
  251. emptyLine++;
  252. for (i = 0; i < len; i++)
  253. {
  254. if (line[i] == '\"' && !flag) flag = 1; /*Не търсим в кавичките*/
  255. else if (line[i] == '\"' && line[i - 1] != '\\' && flag == 1) flag = 0;
  256.  
  257. if (!flag && line[i] == '/' && line[i + 1] == '/') break;
  258.  
  259. if (!flag && line[i] == '/' && line[i + 1] == '*') flag = 2;/*Не търсим в коментарите*/
  260. else if (flag == 2 && line[i] == '*' && line[i + 1] == '/') flag = 0;
  261.  
  262.  
  263. if (!flag) {
  264. if (!i || (i && (line[i - 1] == ' ' || line[i - 1] == '\t' || line[i - 1] == '{' || line[i - 1] == '}' || line[i - 1] == '(' || line[i - 1] == ')'))) {
  265. if (line[i] == 'v' && line[i + 1] == 'o' && line[i + 2] == 'i' && line[i + 3] == 'd') { logical++; flag1 = 1; }
  266. else if (line[i] == 'f' && line[i + 1] == 'o' && line[i + 2] == 'r') { logical++; flag1 = 1; }
  267. else if (line[i] == 'w' && line[i + 1] == 'h' && line[i + 2] == 'i' && line[i + 3] == 'l'&& line[i + 4] == 'e') { logical++; flag1 = 1; }
  268. if (line[i] == 'd' && line[i + 1] == 'o'&& line[i + 2] == '{' && flag1 == 1) logical++;
  269.  
  270. }
  271. }
  272.  
  273. if (flag1 && line[i] == ',') logical++;
  274. else if (flag1 && line[i] == ';') flag1 = 0;
  275.  
  276.  
  277. if (line[i] != '\n' && line[i] != '\t' && line[i] != ' ')
  278. {
  279. emptyLine--;
  280. break;
  281. }
  282.  
  283.  
  284.  
  285. }
  286. }
  287. printf("Празните редове са : %d, \n Операторите за цикъл са: %d", emptyLine, logical);
  288. if (line[strlen(line) - 1] == EOF)
  289. return 0;
  290. }
Advertisement
Add Comment
Please, Sign In to add comment