daily pastebin goal
69%
SHARE
TWEET

Untitled

a guest Jun 13th, 2018 51 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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.             }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top