السلام عليكم
هذا البرنامج قمت بعمله ولكنه غلبني كثيراً جداً، وساعدني فيه بعض الأصدقاء
أهديكم البرنامج، وقولوا لي ما رأيكم فيه....على فكرة أنا تعبت فيه كتير :wacko:
#
include<stdio.h> /*THIS IS DATA STRUCTER WORD PROCESSOR*/
#include<stdlib.h> /*DONE BY IBRAHIM AL-SHARIFFOR ARAB TEAM 2000*/
#include<string.h> /*COPY RIGHT 27/2/2005 WE DAY*/
#include<conio.h> /* * ***** * * * /*/
#include<alloc.h> /* * * * * * * */
#include<ctype.h> /* * ***** * * */
#include<time.h> /* * * * * */
#include<dos.h> /* * * * * */
#define null NULL /* * * * */
#define eof EOF
/****************************************************************************/
char tc;
char *r;
int v,o=0,w_count=0;
typedef struct l_n *l_p;
typedef struct l_n
{
char word[100];
l_p u_lnk;
l_p l_lnk;
l_p d_lnk;
l_p r_lnk;
int len_word;
int n_l; long line_num;int txtclr;
};
l_p ptr=null;
/************************************ DECLARATION OF FUNCTIONS **********/
void repl_w(l_p *ptr);
void counter(FILE *f1);
void doubl(FILE *f);
char menu(char *r);
void asking(void);
void delet(l_p *ptr);
void search(l_p *ptr);
void read(l_p *ptr,FILE *f);
void printP(FILE *f1);
l_p create(void);
void print(l_p *ptr);
void help();
/******************************** M A I N *******************************/
main()
{
char *y;
strcpy(r,y);
do{
clrscr();
tc=menu(y);
tolower(tc);
FILE *f;
switch(tc)
{
case 'o':
fclose(f);
clrscr();asking();
gotoxy(3,6); printf("ENTER YOUR FULL PATH FILE NAME\n");
gotoxy(15,9);o=1;
gets(y);
f=fopen(y,"r+");
ptr=create();
read(&ptr,f);break;
case 'y':
window(1,1,80,25);
textcolor(WHITE);
textbackground(BLACK);
clrscr();
print(&ptr);break;
case 's':
clrscr();asking();
search(&ptr);break;
case 'd':
clrscr();asking();
delet(&ptr);break;
case 'h': help();break;
case 'c':
fclose(f);
fopen(y,"r+");
counter(f);break;
case 'i':
fclose(f);
fopen(y,"r+");
clrscr();
doubl(f);break;
case 'e':exit(1);
case 'r':repl_w(&ptr);break;
}/*switch*/
}while(tc!='e');
return 0;
}/*end of main*/
/********************CREATE LIST NODE WITH NAME TEMP********************/
l_p create(void)
{
l_p temp;
temp=(l_p)malloc(sizeof(l_n));
temp->txtclr=7;
temp->n_l=0;
temp->u_lnk=null;
temp->d_lnk=null;
temp->l_lnk=null;
temp->r_lnk=null;
w_count++;
return temp;
}
/*************************** read **************************************/
void read(l_p *ptr,FILE *f)
{
l_p temp,p1,p2,d1;
p1=*ptr;
char c;int i=0;
temp=*ptr;
d1=*ptr;
int x=0;
while((fscanf(f,"%s",temp->word))!=eof)
{
temp->len_word=strlen(temp->word);
if(c=getc(f)!='\n')
{ x=0;
d1->n_l=1;
temp->r_lnk=d1;
temp->l_lnk=p1;
d1->l_lnk=temp;
p1->r_lnk=temp;
p1=p1->r_lnk;
temp=create();
}/*end of if its line end*/
else
{x++;
if(x>1)
d1->n_l=x+1;
temp->r_lnk=d1;
temp->l_lnk=p1;
d1->l_lnk=temp;
p1->r_lnk=temp;
p1=p1->r_lnk;
i++;
d1->line_num=(i+x);
temp=create();
d1->d_lnk=temp;
d1=d1->d_lnk;
p1=d1;}/* end of else statment */
}/*end of while*/
}/*end of function*/
/***************************** P R I N T ***********************************/
void print(l_p *ptr)
{
int x;
l_p i=*ptr;
l_p j=*ptr;
for(;i;i=i->d_lnk)
{
j=i;
do{
textcolor(j->txtclr);
cprintf("%s ",j->word);
j=j->r_lnk;
}while(j->r_lnk!=i->r_lnk);
for(x=0;x<i->n_l;x++)
printf("\n");
}/*end of for i*/
getch();
}/*end of function*/
/***************************** search for word ****************************/
void search(l_p *ptr)
{
char str1[100];
clrscr();
asking();
gotoxy(3,6);
printf("ENTER WORD TO SEACH\n");
gotoxy(15,9);
scanf("%s",str1);
int x,z;
l_p i=*ptr;
l_p j=*ptr;
window(1,1,80,25);
textcolor(WHITE);
textbackground(BLACK);
clrscr();
for(;i;i=i->d_lnk)
{
j=i;
do{
z=strcmp(str1,j->word);
if(z==0)
textcolor(177);
else
textcolor(7);
cprintf("%s ",j->word);
j=j->r_lnk;
}while(j->r_lnk!=i->r_lnk);
for(x=0;x<=i->n_l;x++)
printf("\n"/*,j->line_num*/);
}/*end of for i*/
getch();}/*end of function*/
/*************************** delete word *****************************/
void delet(l_p *ptr)
{
char str1[100];
gotoxy(3,6);
printf("ENTER THE WORD YOU WANT TO DELETE \n");
gotoxy(15,9);
scanf("%s",str1);
int z;
l_p i=*ptr,p;
l_p j=*ptr;
window(1,1,80,25);
textcolor(WHITE);
textbackground(BLACK);
clrscr();
for(;i;i=i->d_lnk)
{
j=i;
do{
z=strcmp(str1,j->word);
if(z==0){
j->l_lnk->txtclr=(147);
j->r_lnk->txtclr=(147);
if(j==i)
{i->r_lnk->l_lnk=i->l_lnk;
i->l_lnk->r_lnk=i->r_lnk;
i->r_lnk->d_lnk=i->d_lnk;
i=i->r_lnk;
break;}
if(j->r_lnk=i->r_lnk)
break;
j->l_lnk->r_lnk=j->r_lnk;
j->r_lnk->l_lnk=j->l_lnk;
}
else j=j->r_lnk;
}while(j->r_lnk!=i->r_lnk);
/*for(x=0;x<=i->n_l;x++)
printf("\n");*/
}/*end of for i*/
print(ptr);}/*end of function*/
/***************enter change line with another line****************/
/********************************************************/
/*********THIS FUNCTION TO PRINT THE FILE PAGE BY PAGE */
void printP(FILE *f1)
{char c;int counter=0,l_count,s_count=0;
clrscr();
window(1,1,80,25);textbackground(BLACK);textcolor(WHITE);clrscr();
gotoxy(1,1);
while((c=getc(f1))!=EOF)
{
if(c=='\n')
{
counter++;
}
if(counter<=25)
putchar(c);
else
{
printf("\n\n\n>>>..... ... ... ... \n PRESS ANY KEY TO DESPLAY THE NEXT PAGE\n");
getch();
clrscr();gotoxy(1,1);
counter=0;
} }getch();}
/*********************************DOUBLE***********************************/
void doubl(FILE *f)
{char c,z;
window(1,1,80,25);textbackground(BLACK);textcolor(WHITE);clrscr();
gotoxy(1,1);
printf("desply on the Screen only\n");
printf("Display on the screen & on the file\n");
printf("double in the File only");
z=getch();
z=tolower(z);
switch(z)
{
case 's':
while((c=getc(f))!=EOF)
{
putch(c);
if(c=='\n')
{
putch('\n');//putch('\n');putch('\r');
}
} break;
case 'd':
while((c=getc(f))!=EOF)
{
putch(c);fputc(c,f);
if(c=='\n')
{
putch('\n');
putc('\n',f);//putc('\r',);
}
} break;
}
getch();
}
/**************************** H E L P *************************************/
void help(void)
{
window (20,4,54,20); textbackground (8); clrscr();textcolor(4);
cprintf("\n\r ABOUT:\n\r");
textcolor(7);
cprintf(" This is data structer project\n\r");
cprintf(" aminimum word processor this\n\r program");
cprintf(" can be display file and\n\r counting number ");
cprintf("of words number\n\r of letters replace word");
cprintf("word in\n\r the text file");
cprintf(" replace line on line \n\n\n\r");
cprintf("this project with\n\b\b\b ٌِِِِARAB TEAM 2000\n");
textcolor(4);
cprintf("\n\rCOPYWRITE : IBRAHIM AL-SHARIF\n\r with my best wishes I.R.S");
getch();}
/*********************** COUNTER ******************************/
void counter(FILE *f1)
{char c;
int cou[127];
int lcount=0;
long alphacountc=0,nucou=0;
long alphacounts=0;
for(v=0;v<127;v++)
cou[v]=0;
while((c=getc(f1))!=EOF)
{ cou[c]++;;
if(c=='\n')
{lcount++;
}
}
window (20,4,54,20); textbackground (8); clrscr();textcolor(7);
int i;
for(i='A';i<='Z';i++)
alphacountc+=cou;
for(i='a';i<='z';i++)
alphacounts+=cou;
for(i='0';i<'9';i++)
nucou+=cou;
cprintf("\n\n\r Number of Lines = %d",lcount+1);
cprintf("\n\r Alphapetecal charachter =%ld \n",alphacounts+alphacountc);
cprintf("\r Numerical Char (numbers)=%ld\n",nucou);;
cprintf("\r Number of words =%d\n",w_count);
textcolor(3);
cprintf("\n\n\r To display evry charactr ferquncy");
cprintf("\n\n\r Enter D character");
textcolor(6);
cprintf("\n\n\n\n\n\rTO MAIN MENU PRESS ANY KEY");
gotoxy(8,11);cprintf("D");gotoxy(1,17);
char d;
d=getch();
if(d=='d')
{clrscr();
/***************************************notneeded ****************/
/*for(i=0;i<=15;i++)
{cprintf("%c <===> %d\n\r",i,cou);}
cprintf("PRESS ANY KEY TO CONTINUE\n\r");
getch();clrscr();
for(i=16;i<=30;i++)
{cprintf("%c <===> %d\n\r",i,cou);}
cprintf("PRESS ANY KEY TO CONTINUE\n\r");getch();clrscr();*/
/***************************************************************/
for(i=31;i<=45;i++)
{cprintf("%c <===> %d\n\r",i,cou);}
cprintf("PRESS ANY KEY TO CONTINUE\n\r");getch();clrscr();
for(i=46;i<=60;i++)
{cprintf("%c <===> %d\n\r",i,cou);}
cprintf("PRESS ANY KEY TO CONTINUE\n\r");getch();clrscr();
for(i=61;i<=75;i++)
{cprintf("%c <===> %d\n\r",i,cou);}
cprintf("PRESS ANY KEY TO CONTINUE\n\r");getch();clrscr();
for(i=76;i<=90;i++)
{cprintf("%c <===> %d\n\r",i,cou);}
cprintf("PRESS ANY KEY TO CONTINUE\n\r");getch();clrscr();
for(i=91;i<=105;i++)
{cprintf("%c <===> %d\n\r",i,cou);}
cprintf("PRESS ANY KEY TO CONTINUE\n\r");getch();clrscr();
for(i=106;i<=119;i++)
{cprintf("%c <===> %d\n\r",i,cou);}
cprintf("PRESS ANY KEY TO CONTINUE\n\r");getch();clrscr();
for(i=120;i<=126;i++)
{cprintf("%c <===> %d\n\r",i,cou);}
cprintf("Press Any Key To exit to main menu\n\r");
}
getch();
}
/************************** replace line with other****************/
void repl_w(l_p *ptr)
{
int e;
char str1[100],in[100];
window (20,4,54,20); textbackground (8); clrscr();textcolor(15);
asking();
gotoxy(1,6);textcolor(15);
printf("ENTER THE WORD YOU WANT TO change it \n");
gotoxy(15,9);
scanf("%s",str1);
clrscr();
asking();
gotoxy(1,6);textcolor(15);
cprintf("ENTER THE WORD YOU WANT TO put in \n");
gotoxy(15,9);
scanf("%s",in);
int z;
l_p i=*ptr;
l_p j=*ptr;
window(1,1,80,25);
textcolor(WHITE);
textbackground(BLACK);
clrscr();
for(;i;i=i->d_lnk)
{
j=i;
do{
z=strcmp(str1,j->word);
if(z==0){
strcpy(j->word,in);
j->txtclr=(127);
}
j=j->r_lnk;
}while(j->r_lnk!=i->r_lnk);
/*for(x=0;x<=i->n_l;x++)
printf("\n");*/
}/*end of for i*/
print(ptr);}/*end of function*/
/**********************************************************************/
/********************** REPLACE LINE WITH LINE ************************/
/****************************M E N U*************************************/
char menu(char *r)
{
int i;
clrscr();
textcolor(7);
window(1,1,80,25);
textbackground(3);
clrscr();
textcolor (BLACK);
if(o==1)
{ gotoxy(28,4);
cprintf("is< %s >Open",r);
}
gotoxy(1,1);
textcolor (8);
cprintf("\n\n\n\n OPEN");
cprintf("\n\n\n\r COUNTER\n\r");
cprintf("\n\n\r REPLACE WORD \n");
cprintf("\n\n\r DELETE WORD \n");
cprintf("\n\n\r SEARCH \n");
gotoxy(55,5);
cprintf(" DISPLY FILE ");
gotoxy(55,8);
cprintf(" EXIT");
//gotoxy(55,8);
//cprintf(" OF WORDS");
gotoxy(55,11);
cprintf(" INSERT SPACE LINE");
gotoxy(55,14);
cprintf(" REPLACE LINE ");
//gotoxy(55,14);
//cprintf(" ANY WORD");
gotoxy(55,17);
cprintf(" HELP");
gotoxy(5,5);textcolor(4);cprintf("O");
gotoxy(5,8);textcolor(4);cprintf("C");
gotoxy(5,11);textcolor(4);cprintf("R");
gotoxy(5,14);textcolor(4);cprintf("D");
gotoxy(5,17);textcolor(4);cprintf("S");
gotoxy(57,17);textcolor(4);cprintf("H");
gotoxy(60,14);textcolor(4);cprintf("L");
gotoxy(57,11);textcolor(4);cprintf("I");
gotoxy(62,5);textcolor(4);cprintf("Y");
gotoxy(57,8);textcolor(4);cprintf("E");
textcolor(BLACK);
gotoxy (1,1); for (i=0;i<80;++i) printf ("%c",205);
gotoxy (1,3); for (i=0;i<80;++i) printf ("%c",205);
gotoxy (1,2);textcolor(0);cprintf(" DATA STRUCTER PROJECT MINI WORD PROCESSOR TO: ");textcolor(177);cprintf(" ARAB TEAM 2000.");textcolor(WHITE);
gotoxy (1,6); for (i=0;i<80;++i) printf ("%c",'-');
gotoxy (1,9); for (i=0;i<80;++i) printf ("%c",'-');
gotoxy (1,12); for (i=0;i<80;++i) printf ("%c",'-');
gotoxy (1,15); for (i=0;i<80;++i) printf ("%c",'-');
gotoxy (1,21); for (i=0;i<80;++i) printf ("%c",205);
/*time*/
struct time t;
gettime(&t);
gotoxy(32,21);
cprintf("%2d:%02d:%02d.%02d\n",t.ti_hour, t.ti_min, t.ti_sec, t.ti_hund);
/*time*/
gotoxy(12,23);textcolor(RED);cprintf("ALL RIGHTS RESEVED TO : ABED ALMONEM SAMEER FATAFTA.");
textcolor(BLACK);
gotoxy (1,25); for (i=0;i<80;++i) printf ("%c",205);
window (20,4,54,19); textbackground (1);textcolor(15); clrscr();
gotoxy (2,5); for (i=0;i<31;++i) printf ("%c",205);
gotoxy (2,7); for (i=0;i<31;++i) printf ("%c",205);
gotoxy (2,5); printf("%c",'*'); //201
gotoxy (2,7); printf("%c",'*'); //200
gotoxy (2,6); printf("%c",'*'); //186
gotoxy (33,5); printf("%c",'*'); //187
gotoxy (33,6); printf("%c",'*'); //186
gotoxy (33,7); printf("%c",'*'); //188
gotoxy(3,6); printf("Enter character of your choise\n");
gotoxy(14,9); printf("%c%c%c%c%c",'|','-','-','>','*');
gotoxy(18,9); printf("%c%c%c%c%c",'*','<','-','-','|');
gotoxy(18,9);
tc=getch();
if(tc>'A'&&tc<'Z')
tc=tc+32;
return tc;
}
/************************ A S K I N G *****************************/
void asking(void)
{
/*asking box*/
window (20,4,54,19); textbackground (1); clrscr();textcolor(15);
gotoxy (2,5); for (v=0;v<31;++v) printf ("%c",205);
gotoxy (2,7); for (v=0;v<31;++v) printf ("%c",205);
gotoxy (2,5); printf("%c",'*'); //201
gotoxy (2,7); printf("%c",'*'); //200
gotoxy (2,6); printf("%c",'*'); //186
gotoxy (33,5); printf("%c",'*'); //187
gotoxy (33,6); printf("%c",'*'); //186
gotoxy (33,7); printf("%c",'*'); //188
gotoxy(14,9); printf("%c%c%c%c%c",'<','_','_','_','_');
gotoxy(18,9); printf("%c%c%c%c%c",'_','_','_','_','>');gotoxy(15,9);
/*end of box*/
}ما زبط معي أحط أتاتش للفايل، بس إنسخ الكود وجربه
وأنا في خدمة عيونكم لأي سؤال فيه وعسى تستفيدو منه
