Advertisement
Guest User

Untitled

a guest
Jun 13th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.83 KB | None | 0 0
  1. #include <locale.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <stdlib.h>
  5.  
  6. struct elements
  7. {
  8.  
  9. int number;//номер элемента
  10. char name[20];//наименование элемента
  11. int atomic_weight[100];//атомный вес
  12. char conduction;//проводимость
  13.  
  14. } element;
  15.  
  16.  
  17.  
  18. ///////////////////////////////////////////////////////////
  19. void printf(FILE *f){
  20. rewind(f);
  21. int fl=0;
  22. puts("------------------ \tELEMENTS\t-----------------------");
  23. puts("--------------------------------------------------------------");
  24. puts("| номер| наименованте|\tатомный вес|проводимость");
  25. while (fread(&element, sizeof(element), 1, f)>0){
  26. printf("|\t%4d|\t%10s\t%%4d|%10s|\n", element.number, element.name, element.atomic_weight, element.conduction);
  27. fl++;
  28. }
  29. if(fl==0)
  30. puts("\t\t ошибка ввода");
  31. else
  32. puts("--------------------------------------------------------------");
  33. rewind(f);
  34. }
  35. //////////////////////////////////////////////////////////////////////
  36. void dobavlenie(FILE *f,char filename[]){
  37. char st[20], st1[20];
  38. fcloseall();
  39. f = fopen(filename, "atoi");
  40. if (f != NULL)
  41. fseek(f, 0L, 2);
  42.  
  43. else
  44. f = fopen(filename, "w+b");
  45. puts("введите название элемента, номер, атомный вес и проводимость:");
  46. puts("\nprov\t-\tпровдник\nisokyator\t-\tизолятор\npolprov\t-\tполупроводник");
  47. puts("для окончания ввода нажмите enter");
  48. fflush(stdin);
  49. while (gets(st), strlen(st) != 0){
  50. strcpy(element.name, st);
  51. int y=atoi(gets(st1));
  52. while((y<1)||(y>118)){
  53. puts("Номер элемента введен неверно!");
  54. y=atoi(gets(st1));
  55. }
  56. element.number = y;
  57. gets(st1);
  58. while((strcmp(st1,"prov")!=0)&&(strcmp(st1,"isolyator")!=0)&&(strcmp(st1,"polprov")!=0)){
  59. puts("Неформатный ввод");
  60. gets(st1);
  61. }
  62. strcpy(element.atomic_weight,st1);
  63. element.atomic_weight = atoi(gets(st1));
  64. gets(st1);
  65. puts("__________________");
  66. }
  67. }
  68. ////////////////////////////////////////////////////////
  69. void yd1(FILE *f, char filename[]){//удаление по номеру
  70. FILE *f1;
  71. int st[20];
  72. f1=fopen("NEWTXT1.dat","w+b");
  73. int fl=0;
  74. puts("Введите номер элемента, который необходимо удалить");
  75. scanf("%d",st);
  76. while(fread(&element, sizeof(element), 1, f)>0){
  77. if(strcmp(element.name,st)!=0){
  78. fwrite(&element, sizeof(element), 1, f1);
  79. fl++;
  80. }
  81. }
  82. if(fl==0)
  83. puts("Номер не найден");
  84. else{
  85. puts(" Элемент с данным номером удален");
  86. printf(f1);
  87. }
  88. fcloseall();
  89. unlink(filename);
  90. rename("NEWTXT1.dat",filename);
  91. f = fopen(filename, "r+b");
  92. if (f != NULL)
  93. fseek(f, 0L, 2);
  94.  
  95. else
  96. f = fopen(filename, "w+b");
  97. }
  98. /////////////////////////////////////////////////////
  99. void yd2(FILE *f, char filename[]){//удаление по названию
  100. FILE *f1;
  101. f1=fopen("NEWTXT1.dat","w+b");
  102. int fl=0;
  103. puts("Введите название элемента, который необходимо удалить");
  104. char y;
  105. scanf("%s",&y);
  106. while(fread(&element, sizeof(element), 1, f)>0){
  107. if(element.name!=y){
  108. fwrite(&element, sizeof(element), 1, f1);
  109. fl++;
  110. }
  111. }
  112. if(fl==0)
  113. puts("Элементов с данным названием не найдено");
  114. else{
  115. puts("Элементы с данным названием удалены");
  116. printf(f1);
  117. }
  118. fcloseall();
  119. unlink(filename);
  120. rename("NEWTXT1.dat",filename);
  121. f = fopen(filename, "r+b");
  122. if (f != NULL)
  123. fseek(f, 0L, 2);
  124.  
  125. else
  126. f = fopen(filename, "w+b");
  127. }
  128. ///////////////////////////////////////////////
  129. void yd3(FILE *f, char filename[]){//удаление по атомному весу
  130. FILE *f1;
  131. char st[10];
  132. f1=fopen("NEWTXT1.dat","w+b");
  133. int fl=0;
  134. puts("Введите проводимость элемента, который необходимо удалить");
  135. scanf("%s",st);
  136. while((strcmp(st," prov")!=0)&&(strcmp(st,"isolyator")!=0)&&(strcmp(st,"polprov")!=0)){
  137. puts("Неформатный ввод");
  138. scanf("%s",st);
  139. }
  140. while(fread(&element, sizeof(element), 1, f)>0){
  141. if(strcmp(element.conduction,st)!=0){
  142. fwrite(&element, sizeof(element), 1, f1);
  143. fl++;
  144. }
  145. }
  146. if(fl==0)
  147. puts("Элементов с данной проводимостью не найдено");
  148. else{
  149. puts("Элементы с данной проводимостью удалены");
  150. printf(f1);
  151. }
  152. fcloseall();
  153. unlink(filename);
  154. rename("NEWTXT1.dat",filename);
  155. f = fopen(filename, "r+b");
  156. if (f != NULL)
  157. fseek(f, 0L, 2);
  158.  
  159. else
  160. f = fopen(filename, "w+b");
  161. }
  162. ///////////////////////////////////////////////
  163. void yd4(FILE *f, char filename[]){//удаление по атомному весу
  164. FILE *f1;
  165. f1=fopen("NEWTXT1.dat","w+b");
  166. int fl=0;
  167. puts("Введите атомный минимальный вес, элементы меньше которого надо удалить");
  168. int y;
  169. scanf("%d",&y);
  170. while(fread(&element, sizeof(element), 1, f)>0){
  171. if(element.atomic_weight>y){
  172. fwrite(&element, sizeof(element), 1, f1);
  173. fl++;
  174. }
  175. }
  176. if(fl==0)
  177. puts("Элементов с меньшим весом не найдено");
  178. else{
  179. puts("Нужные элементы удалены");
  180. printf(f1);
  181. }
  182. fcloseall();
  183. unlink(filename);
  184. rename("NEWTXT1.dat",filename);
  185. f = fopen(filename, "r+b");
  186. if (f != NULL)
  187. fseek(f, 0L, 2);
  188.  
  189. else
  190. f = fopen(filename, "w+b");
  191. }
  192.  
  193.  
  194. /////////////////////////////////////////////
  195. void yd5(FILE *f, char filename[]){//очистка файла
  196. fcloseall();
  197. unlink(filename);
  198. f = fopen(filename, "w+b");
  199. }
  200. //////////////////////////////////////////////
  201. void ydalenie(FILE *f,char filename[]){
  202. puts("Необходимо удалить\n1\t элементы с определенным номером\n2\t элементы с данным названием\n3\t элементы одной проводимости\n4\t ниги одного веса\n5\tудалить все");
  203. int m;
  204. scanf("%d", &m);
  205. rewind(f);
  206. switch(m){
  207. case 1:
  208. yd1(f, filename);
  209. break;
  210. case 2:
  211. yd2(f, filename);
  212. break;
  213. case 3:
  214. yd3(f, filename);
  215. break;
  216. case 4:
  217. yd4(f, filename);
  218. break;
  219. case 5:
  220. yd5(f, filename);
  221. break;
  222.  
  223. }
  224. rewind(f);
  225. }
  226. /////////////////////////////////////////////////////
  227. void p1(FILE *f){
  228. char pr[10];
  229. int fl=0;
  230. puts("Введите проводимость");
  231. scanf("%s",pr);
  232. while((strcmp(pr,"prov")!=0)&&(strcmp(pr,"isolyator")!=0)&&(strcmp(pr,"polprov")!=0)){
  233. puts("Неформатный ввод");
  234. scanf("%s",pr);
  235. }
  236.  
  237. while(fread(&element, sizeof(element), 1, f)>0){
  238. if((element.conduction,pr)=="polprov"))){
  239. if(fl==0){
  240. puts("------------------ \tELEMENTS\t-----------------------");
  241. puts("--------------------------------------------------------------");
  242. puts("| название| атомный вес|\t");
  243. fl++;
  244. }
  245. printf("|\t%10s|%d|\tn", element.name, element.atomic_weight);
  246. }
  247. }
  248. if(fl==0)
  249. puts("Элементы не найдены");
  250. else
  251. puts("--------------------------------------------------------------");
  252. }
  253. /////////////////////////////////////////////////////
  254. void p2(FILE *f){
  255. char pr[10];
  256. int ves[100];
  257. int fl=0;
  258. puts("Введите проводимость");
  259. scanf("%s",pr);
  260. while((strcmp(pr,"prov")!=0)&&(strcmp(pr,"isolyator")!=0)&&(strcmp(pr,"polprov")!=0)){
  261. puts("Неформатный ввод");
  262. scanf("%s",pr);
  263. while(fread(&element, sizeof(element), 1, f)>0){
  264. if((element.conduction,pr)=="prov"))){
  265.  
  266. //осталось сортировать по возрастанию атомн веса
  267. }
  268. /////////////////////////////////////////////////////
  269. void p3(FILE *f){
  270. char pr[10];
  271. int ves[100];
  272. int fl=0;
  273. puts("Введите проводимость");
  274. scanf("%s",pr);
  275. while((strcmp(pr,"prov")!=0)&&(strcmp(pr,"isolyator")!=0)&&(strcmp(pr,"polprov")!=0)){
  276. puts("Неформатный ввод");
  277. scanf("%s",pr);
  278. while(fread(&element, sizeof(element), 1, f)>0){
  279. if((element.conduction,pr)=="isolyator"))&&(//не превышает какого-то веса)
  280.  
  281.  
  282.  
  283.  
  284.  
  285.  
  286. int main(int argc, char *argv[])
  287. {
  288. setlocale(0, "russian");
  289. FILE *f;
  290. char st[20], st1[20], filename[20];
  291. gets(filename);
  292. f = fopen(filename, "r+b");
  293. if (f != NULL)
  294. fseek(f, 0L, 2);
  295.  
  296. else
  297. f = fopen(filename, "w+b");
  298. dobavlenie(f,filename);
  299. ////////////////////////////////////////
  300. printf(f);
  301. int m=1;
  302. while(m!=0){
  303. scanf("%d", &m);
  304. switch(m){
  305. case 1:
  306. dobavlenie(f,filename);
  307. printf(f);
  308. break;
  309. case 2:
  310. ydalenie(f,filename);
  311. break;
  312. case 3:
  313. poisk(f);
  314. break;
  315. case 4:
  316. printf(f);
  317. break;
  318. case 0:
  319. break;
  320. default:
  321. puts("Не верно");
  322. }
  323. }
  324. ////////////////////////////////////////
  325. rewind(f);
  326. _getch();
  327. return 0;
  328. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement