Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <locale.h>
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- struct elements
- {
- int number;//номер элемента
- char name[20];//наименование элемента
- int atomic_weight[100];//атомный вес
- char conduction;//проводимость
- } element;
- ///////////////////////////////////////////////////////////
- void printf(FILE *f){
- rewind(f);
- int fl=0;
- puts("------------------ \tELEMENTS\t-----------------------");
- puts("--------------------------------------------------------------");
- puts("| номер| наименованте|\tатомный вес|проводимость");
- while (fread(&element, sizeof(element), 1, f)>0){
- printf("|\t%4d|\t%10s\t%%4d|%10s|\n", element.number, element.name, element.atomic_weight, element.conduction);
- fl++;
- }
- if(fl==0)
- puts("\t\t ошибка ввода");
- else
- puts("--------------------------------------------------------------");
- rewind(f);
- }
- //////////////////////////////////////////////////////////////////////
- void dobavlenie(FILE *f,char filename[]){
- char st[20], st1[20];
- fcloseall();
- f = fopen(filename, "atoi");
- if (f != NULL)
- fseek(f, 0L, 2);
- else
- f = fopen(filename, "w+b");
- puts("введите название элемента, номер, атомный вес и проводимость:");
- puts("\nprov\t-\tпровдник\nisokyator\t-\tизолятор\npolprov\t-\tполупроводник");
- puts("для окончания ввода нажмите enter");
- fflush(stdin);
- while (gets(st), strlen(st) != 0){
- strcpy(element.name, st);
- int y=atoi(gets(st1));
- while((y<1)||(y>118)){
- puts("Номер элемента введен неверно!");
- y=atoi(gets(st1));
- }
- element.number = y;
- gets(st1);
- while((strcmp(st1,"prov")!=0)&&(strcmp(st1,"isolyator")!=0)&&(strcmp(st1,"polprov")!=0)){
- puts("Неформатный ввод");
- gets(st1);
- }
- strcpy(element.atomic_weight,st1);
- element.atomic_weight = atoi(gets(st1));
- gets(st1);
- puts("__________________");
- }
- }
- ////////////////////////////////////////////////////////
- void yd1(FILE *f, char filename[]){//удаление по номеру
- FILE *f1;
- int st[20];
- f1=fopen("NEWTXT1.dat","w+b");
- int fl=0;
- puts("Введите номер элемента, который необходимо удалить");
- scanf("%d",st);
- while(fread(&element, sizeof(element), 1, f)>0){
- if(strcmp(element.name,st)!=0){
- fwrite(&element, sizeof(element), 1, f1);
- fl++;
- }
- }
- if(fl==0)
- puts("Номер не найден");
- else{
- puts(" Элемент с данным номером удален");
- printf(f1);
- }
- fcloseall();
- unlink(filename);
- rename("NEWTXT1.dat",filename);
- f = fopen(filename, "r+b");
- if (f != NULL)
- fseek(f, 0L, 2);
- else
- f = fopen(filename, "w+b");
- }
- /////////////////////////////////////////////////////
- void yd2(FILE *f, char filename[]){//удаление по названию
- FILE *f1;
- f1=fopen("NEWTXT1.dat","w+b");
- int fl=0;
- puts("Введите название элемента, который необходимо удалить");
- char y;
- scanf("%s",&y);
- while(fread(&element, sizeof(element), 1, f)>0){
- if(element.name!=y){
- fwrite(&element, sizeof(element), 1, f1);
- fl++;
- }
- }
- if(fl==0)
- puts("Элементов с данным названием не найдено");
- else{
- puts("Элементы с данным названием удалены");
- printf(f1);
- }
- fcloseall();
- unlink(filename);
- rename("NEWTXT1.dat",filename);
- f = fopen(filename, "r+b");
- if (f != NULL)
- fseek(f, 0L, 2);
- else
- f = fopen(filename, "w+b");
- }
- ///////////////////////////////////////////////
- void yd3(FILE *f, char filename[]){//удаление по атомному весу
- FILE *f1;
- char st[10];
- f1=fopen("NEWTXT1.dat","w+b");
- int fl=0;
- puts("Введите проводимость элемента, который необходимо удалить");
- scanf("%s",st);
- while((strcmp(st," prov")!=0)&&(strcmp(st,"isolyator")!=0)&&(strcmp(st,"polprov")!=0)){
- puts("Неформатный ввод");
- scanf("%s",st);
- }
- while(fread(&element, sizeof(element), 1, f)>0){
- if(strcmp(element.conduction,st)!=0){
- fwrite(&element, sizeof(element), 1, f1);
- fl++;
- }
- }
- if(fl==0)
- puts("Элементов с данной проводимостью не найдено");
- else{
- puts("Элементы с данной проводимостью удалены");
- printf(f1);
- }
- fcloseall();
- unlink(filename);
- rename("NEWTXT1.dat",filename);
- f = fopen(filename, "r+b");
- if (f != NULL)
- fseek(f, 0L, 2);
- else
- f = fopen(filename, "w+b");
- }
- ///////////////////////////////////////////////
- void yd4(FILE *f, char filename[]){//удаление по атомному весу
- FILE *f1;
- f1=fopen("NEWTXT1.dat","w+b");
- int fl=0;
- puts("Введите атомный минимальный вес, элементы меньше которого надо удалить");
- int y;
- scanf("%d",&y);
- while(fread(&element, sizeof(element), 1, f)>0){
- if(element.atomic_weight>y){
- fwrite(&element, sizeof(element), 1, f1);
- fl++;
- }
- }
- if(fl==0)
- puts("Элементов с меньшим весом не найдено");
- else{
- puts("Нужные элементы удалены");
- printf(f1);
- }
- fcloseall();
- unlink(filename);
- rename("NEWTXT1.dat",filename);
- f = fopen(filename, "r+b");
- if (f != NULL)
- fseek(f, 0L, 2);
- else
- f = fopen(filename, "w+b");
- }
- /////////////////////////////////////////////
- void yd5(FILE *f, char filename[]){//очистка файла
- fcloseall();
- unlink(filename);
- f = fopen(filename, "w+b");
- }
- //////////////////////////////////////////////
- void ydalenie(FILE *f,char filename[]){
- puts("Необходимо удалить\n1\t элементы с определенным номером\n2\t элементы с данным названием\n3\t элементы одной проводимости\n4\t ниги одного веса\n5\tудалить все");
- int m;
- scanf("%d", &m);
- rewind(f);
- switch(m){
- case 1:
- yd1(f, filename);
- break;
- case 2:
- yd2(f, filename);
- break;
- case 3:
- yd3(f, filename);
- break;
- case 4:
- yd4(f, filename);
- break;
- case 5:
- yd5(f, filename);
- break;
- }
- rewind(f);
- }
- /////////////////////////////////////////////////////
- void p1(FILE *f){
- char pr[10];
- int fl=0;
- puts("Введите проводимость");
- scanf("%s",pr);
- while((strcmp(pr,"prov")!=0)&&(strcmp(pr,"isolyator")!=0)&&(strcmp(pr,"polprov")!=0)){
- puts("Неформатный ввод");
- scanf("%s",pr);
- }
- while(fread(&element, sizeof(element), 1, f)>0){
- if((element.conduction,pr)=="polprov"))){
- if(fl==0){
- puts("------------------ \tELEMENTS\t-----------------------");
- puts("--------------------------------------------------------------");
- puts("| название| атомный вес|\t");
- fl++;
- }
- printf("|\t%10s|%d|\tn", element.name, element.atomic_weight);
- }
- }
- if(fl==0)
- puts("Элементы не найдены");
- else
- puts("--------------------------------------------------------------");
- }
- /////////////////////////////////////////////////////
- void p2(FILE *f){
- char pr[10];
- int ves[100];
- int fl=0;
- puts("Введите проводимость");
- scanf("%s",pr);
- while((strcmp(pr,"prov")!=0)&&(strcmp(pr,"isolyator")!=0)&&(strcmp(pr,"polprov")!=0)){
- puts("Неформатный ввод");
- scanf("%s",pr);
- while(fread(&element, sizeof(element), 1, f)>0){
- if((element.conduction,pr)=="prov"))){
- //осталось сортировать по возрастанию атомн веса
- }
- /////////////////////////////////////////////////////
- void p3(FILE *f){
- char pr[10];
- int ves[100];
- int fl=0;
- puts("Введите проводимость");
- scanf("%s",pr);
- while((strcmp(pr,"prov")!=0)&&(strcmp(pr,"isolyator")!=0)&&(strcmp(pr,"polprov")!=0)){
- puts("Неформатный ввод");
- scanf("%s",pr);
- while(fread(&element, sizeof(element), 1, f)>0){
- if((element.conduction,pr)=="isolyator"))&&(//не превышает какого-то веса)
- int main(int argc, char *argv[])
- {
- setlocale(0, "russian");
- FILE *f;
- char st[20], st1[20], filename[20];
- gets(filename);
- f = fopen(filename, "r+b");
- if (f != NULL)
- fseek(f, 0L, 2);
- else
- f = fopen(filename, "w+b");
- dobavlenie(f,filename);
- ////////////////////////////////////////
- printf(f);
- int m=1;
- while(m!=0){
- scanf("%d", &m);
- switch(m){
- case 1:
- dobavlenie(f,filename);
- printf(f);
- break;
- case 2:
- ydalenie(f,filename);
- break;
- case 3:
- poisk(f);
- break;
- case 4:
- printf(f);
- break;
- case 0:
- break;
- default:
- puts("Не верно");
- }
- }
- ////////////////////////////////////////
- rewind(f);
- _getch();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement