Jump to content

vendor666

Потребител
  • Брой теми

    1
  • Регистрация

  • Последно посещение

vendor666's Achievements

Новобранец

Новобранец (1/14)

0

Репутация в общността

  1. В магазин за ел. уреди се поддържа иформация за:вид на уреда,модел,производител,едиична цена,количество.Да се състави програма,която поддържа файл с посочените данни с помощта на подпрограми за: - създаване на нов файл с информация за уредите - регистриране на продажба на уред - регистриране доставка на уреди - пресмятане цената на наличното количество от всички уреди от даден вид - намиране на уреда от даден вид с най-ниска цена #include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <io.h> #include <math.h> #include <conio.h> #define FN "UREDI" /* FILE NAME */ #define BL 512 /* FILE BUF LEN */ #define RL 52 /* REC LEN */ #define VL 10 /* VID LEN */ #define ML 10 /* MODEL LEN */ #define PL 10 /* PROIZ LEN */ #define CL 10 /* CENA LEN */ #define KL 10 /* KOLICH LEN */ #define NV 10 /* NUM VID */ #define OVID 0 #define OMOD OVID+VL #define OPRZ OMOD+ML #define OCEN OPRZ+PL #define OKOL OCEN+CL typedef struct MT MT; char RB[RL+1]; /* REC BUF */ char FB[bL]; /* FILE BUF */ int BP; /* FILE BUF PTR */ int BN; /* BYTES RW/WR */ int FH; /* FILE HANDLE */ long RN; /* NUM RECS */ float SV; /* SUM VID */ float MV; /* MIN VID */ void (*FM)(MT*); /* FUNC PTR */ char* MS= /* MENU STR */ "[D]OSTAVQ\n" "[K]UPUVA\n" "[s]UMA\n" "[M]INIMALNA\n" "[i]ZHOD\n"; struct MT{ char S[ML]; /* NAME */ long K; /* REC NUM */ MT* L; /* LEFT SUBTREE */ MT* R; /* RIGHT SUBTREE */ }; struct{ char* S; MT* P; }VT[NV]= { {"ANTENA ",0}, {"BATERIQ ",0}, {"CHASOVNIK ",0}, {"HLADILNIK ",0}, {"LAMPA ",0}, {"PECHKA ",0}, {"TELEFON ",0}, {"TELEVIZOR ",0}, {"VENTILATOR",0}, {"VIDEO ",0} }; int WRB(); /* WRITE FILE BUF */ int RDB(); /* READ FILE BUF */ int FLB(); /* FLUSH FILE BUF */ long SEEK(long,int); /* SEEK... */ void CLB(); /* CLEAR REC BUF */ void GET(int,int); /* GET INPUT */ void CPY(char*,char*,int); /* COPY FIX LEN STR */ int CMP(char*,char*,int); /* COMPARE FIX LEN STR */ void F2S(char*,char*,int); /* FILE TO STR */ void S2F(char*,char*,int); /* STR TO FILE */ int VID(char*); /* VID IDX */ long ADI(MT**,char*,long); /* ADD TO IDX */ MT* FNI(MT**,char*); /* FIND IN IDX */ void RVI(MT*); /* ROVE IDX */ void CLI(MT**); /* DESTROY IDX */ void FM1(MT*); /* CALLBACK 1 (SUM) */ void FM2(MT*); /* CALLBACK 2 (MIN) */ void ADR(); /* ADD REC */ void RMR(); /* REMOVE REC */ void IDX(); /* BUILD IDX */ void DLV(); /* DELIVER */ void BUY(); /* BUY...*/ void SUM(); /* CALC SUM */ void MIN(); /* CALC MIN */ void CLR(); /* CLEAR RSRC */ void MNU(); /* MENU */ int main() sqrt() { FH=open(FN,O_RDWR|O_BINARY); if(FH==-1){ FH=_creat(FN,0); if(FH==-1){ printf("Error create file"); return 1;}} else IDX(); MNU(); return 0; } void CLR() { int I; for(I=0;I<NV;I++) CLI(&VT[i].P); close(FH); } void MNU() { char C; L1: system("cls"); //<---- Fixed Here printf("%s\n",MS); C=getch(); switch(C&0XDF){ case 'D': DLV(); break; case 'K': BUY(); break; case 'S': SUM(); getch(); break; case 'M': MIN(); getch(); break; case 'I': CLR(); return;} goto L1; } void IDX() { int I; RN=0; SEEK(0,SEEK_SET); while(RDB()==0){ I=VID(RB+OVID); ADI(&VT[i].P,RB+OMOD,RN++);} } void ADR() { int I; long K; char B[KL+1]; I=VID(RB+OVID); if(I==-1){ printf("Nqma takyv artikul\n"); return;} K=ADI(&VT[i].P,RB+OMOD,RN); if(K!=-1){ SEEK(K*RL,SEEK_SET); RDB(); F2S(B,RB+OKOL,KL); I=atoi(B); itoa(++I,B,10); S2F(RB+OKOL,B,KL); SEEK(K*RL,SEEK_SET);} else{ SEEK(RN*RL,SEEK_SET); RN++;} WRB(); } void RMR() { MT* M; int I,J,K; char B[KL+1]; I=VID(RB+OVID); if(I==-1){ printf("Nqma takyv artikul\n"); return;} M=FNI(&VT[i].P,RB+OMOD); if((int)M==-1){ printf("Nqma takyv model\n"); return;} K=M->K; SEEK(K*RL,SEEK_SET); RDB(); F2S(B,RB+OCEN,CL); printf("CENA : %s\n",B); F2S(B,RB+OKOL,KL); J=atoi(B); if(J==0){ printf("Izcherpano kolichestvo\n"); return;} J--; itoa(J,B,10); S2F(RB+OKOL,B,KL); SEEK(K*RL,SEEK_SET); WRB(); } void DLV() { int C; do{ CLB(); printf("VID : "); GET(OVID,VL); printf("MODEL : "); GET(OMOD,ML); printf("PROIZV : "); GET(OPRZ,PL); printf("CENA : "); GET(OCEN,CL); printf("BROI : "); GET(OKOL,KL); RB[RL-2]=0X0D; RB[RL-1]=0X0A; ADR(); printf("\nOshte?('N' za krai)\n\n"); C=getch();} while((C&0XDF)!='N'); } void BUY() { int C; do{ CLB(); printf("VID : "); GET(OVID,VL); printf("MODEL : "); GET(OMOD,ML); RMR(); printf("\nOshte?('N' za krai)\n\n"); C=getch();} while((C&0XDF)!='N'); } void SUM() { int I; CLB(); printf("VID : "); GET(OVID,VL); I=VID(RB+OVID); if(I==-1){ printf("Nqma takyv artikul"); return;} FM=FM1; SV=0; RVI(VT[i].P); printf("%.2f",SV); } void FM1(MT* P) { char B[CL+1]; SEEK(P->K*RL,SEEK_SET); RDB(); if(RB[OKOL]==0X30) return; F2S(B,RB+OCEN,CL); SV+=atof(B); } void MIN() { int I; CLB(); printf("VID : "); GET(OVID,VL); I=VID(RB+OVID); if(I==-1){ printf("Nqma takyv artikul"); return;} FM=FM2; MV=999999.00; RVI(VT[i].P); printf("%.2f",MV); } void FM2(MT* P) { char B[CL+1]; float I; SEEK(P->K*RL,SEEK_SET); RDB(); if(RB[OKOL]==0X30) return; F2S(B,RB+OCEN,CL); I=atof(B); if(I<MV)MV=I; } void GET(int D,int N) { char C; int I=0; do{ C=getch(); if(C==0X0D) break; putch©; *(RB+D+I++)=C;} while(I<N); printf("\r\n"); } void CLB() { int I=RL; do{ RB[i]=0X20;} while(I--); } int WRB() { int I=0; while(I<RL){ if(BP==BL){ BN=write(FH,FB,BL); if(BN!=BL) return 1; BP=0;} FB[bP++]=RB[i++];} FLB(); return 0; } int RDB() { int I=0; while(I<RL){ if(BP==BN){ BN=read(FH,FB,BL); if(BN==0) return 1; BP=0;} RB[i++]=FB[bP++];} RB[RL]=0; return 0; } int FLB() { if(BP>0){ BN=write(FH,FB,BP); if(BN!=BP) return 1;} BP=0; return 0; } long SEEK(long D,int M) { BP=BN=0; return lseek(FH,D,M); } void CPY(char* D,char* S,int N) { while(N--) *D++=*S++; *D=0; } int CMP(char* D,char* S,int N) { char U,V; while(N--){ U=*D&0XDF; V=*S&0XDF; if(U!=V) return U-V; D++; S++;} return 0; } void F2S(char* D,char *S,int N) { while(N--){ if(*S==0X20) break; *D++=*S++;} *D=0; } void S2F(char* D,char* S,int N) { while(*S){ *D++=*S++; N--;} while(N--) *D++=0X20; } int VID(char *S) { int L=0; int R=NV-1; int M,K; do{ M=(L+R)/2; K=CMP(S,VT[M].S,VL); if(K<0)R=M-1;else if(K>0)L=M+1;else return M;} while(R>=L); return -1; } long ADI(MT** M,char* S,long K) { MT* V=*M; int I; if(V==0){ V=*M=(MT*)malloc(sizeof(MT)); CPY(V->S,S,ML); V->K=K; V->L=0; V->R=0;} else{ I=CMP(S,V->S,ML); if(I<0) return ADI(&V->L,S,K);else if(I>0) return ADI(&V->R,S,K); else return V->K;} return -1; } MT* FNI(MT** M,char* S) { MT* V=*M; int I; if(V==0)return (MT*)-1; I=CMP(S,V->S,ML); if(I<0) return FNI(&V->L,S);else if(I>0) return FNI(&V->R,S); else return V; } void RVI(MT* P) { if(P==0)return; FM(P); RVI(P->L); RVI(P->R); } void CLI(MT** P) { if(*P==0)return; CLI(&(*P)->L); CLI(&(*P)->R); free(*P); *P=0; } Немога да разбера къде трябва да поставя sqrt() за да не ми дава грешка.Трябва да е във функцията на main но пак ми дава 1 грешка.Помогнете ми моля ви.С++ 4.52.Ако можете ми помогнете.Благодаря Ви.
×
×
  • Създай ново...