Создать файл произвольного доступа с полями название продукции, вес единицы, цена единицы - C (СИ)
Формулировка задачи:
Создать файл произвольного доступа с полями название продукции, вес единицы, цена единицы.Та вывести на печать те записи вес которых больше 5 кг.
Cреда:
DEV-C++ Программу написал только есть малость глюки.fn UpdFile(void):
НЕ обновляет значение в файле по номеру(n);fn DelZap(void):
пишет что файл str dell .. но файл остается;#include <stdio.h> struct prod { int n; char nazvaProd[12]; int kg; int cina; }; struct prod st; int menu(void); void NewAddFile(void); void UpdFile(void); void DelZap(void); void PrintMassCat(void); main() { int a; { while((a=menu())!=5) { switch(a) { case 1: NewAddFile(); break; case 2: UpdFile(); break; case 3: DelZap(); break; case 4: PrintMassCat(); break; }} } return 0;} int menu(void) {int nmenu; printf("1-NewAddFile\n"); printf("2-UpdFile\n"); printf("3-DelZap\n"); printf("4-PrintMassCat\n"); printf("5-The END\n"); scanf("%d",&nmenu); return nmenu; } void NewAddFile(){ FILE*p; if ((p=fopen("product.dat","a+"))==NULL){ printf("He ГіГ¤Г*ГҐГІГ±Гї îòêðûòü ГґГ*éë.\n"); exit(1); } printf("vvedit nomer zapusy vid 1 ,0 dlya vuhody\n"); scanf("%d",&st.n); while(st.n!=0) { printf("nazva price vaga\n"); scanf("%s%d%d",&st.nazvaProd,&st.cina,&st.kg); fseek(p,(st.n-1)*sizeof(struct prod),SEEK_SET); fwrite(&st,sizeof(struct prod),1,p); printf("vvedit nomer zapusy ,0 dlya vuhody\n"); scanf("%d",&st.n); } fclose(p); } void UpdFile(){ int a,vaga; FILE*p; if ((p=fopen("product.dat","r+"))==NULL){ printf("He ГіГ¤Г*ГҐГІГ±Гї îòêðûòü ГґГ*éë.\n"); exit(1); } printf("vvedit nomer zapusy dlua UPD\n"); scanf("%d",&a); fseek(p,(a-1)*sizeof(struct prod),SEEK_SET); fread(&st,sizeof(struct prod),1,p); if(st.n!=0) printf("net dannuh.\n"); else { printf("%10s%10s%10d%10d\n",st.n,st.nazvaProd,st.cina,st.kg); printf("new zn vaga\n"); scanf("%d",&vaga); st.kg=vaga; fseek(p,(a-1)*sizeof(struct prod),SEEK_SET); fwrite(&st,sizeof(struct prod),1,p); } fclose(p); } void DelZap(){ FILE*p; if ((p=fopen("product.dat","a+"))==NULL){ printf("He ГіГ¤Г*ГҐГІГ±Гї îòêðûòü ГґГ*éë.\n"); exit(1); } struct prod bst={0,"",0,0}; int n; printf("vvedit zapusy dlua DELL\n"); scanf("%d",&n); fseek(p,(n-1)*sizeof(struct prod),SEEK_SET); fread(&st,sizeof(struct prod),1,p); if(st.n==0) printf("net dannuh.\n"); else { fseek(p,(n-1)*sizeof(struct prod),SEEK_SET); fwrite(&bst,sizeof(struct prod),1,p); printf("str dell\n"); } fclose(p); } void PrintMassCat() { FILE*p; if ((p=fopen("product.dat","a+"))==NULL){ printf("He ГіГ¤Г*ГҐГІГ±Гї îòêðûòü ГґГ*éë.\n"); exit(1); } printf("%10s%10s%10s%10s\n","nomer","nazva","price","vaga"); while(!feof(p)) { fread(&st,sizeof(struct prod),1,p); if(st.n!=0) printf("%10d%10s%10d%10d\n",st.n,st.nazvaProd,st.cina,st.kg); } fclose(p); }
Решение задачи: «Создать файл произвольного доступа с полями название продукции, вес единицы, цена единицы»
textual
Листинг программы
if(st.n!=0) printf("net dannuh.\n");
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д