Автор работы: Пользователь скрыл имя, 08 Июня 2015 в 22:42, курсовая работа
Си - универсальный язык программирования. Он тесно связан с системой UNIX, так как был разработан в этой системе, которая, как и большинство программ, работающих в ней, написаны на Си. Однако язык не привязан жестко к какой-то одной операционной системе или машине. Хотя он и назван «языком системного программирования», поскольку удобен для написания компиляторов и операционных систем, оказалось, что на нем столь же хорошо писать большие программы другого профиля.
Файл cl.h
enum ConsoleColor
{
Black = 0,
Blue = 1,
Green = 2,
Cyan = 3,
Red = 4,
Magenta = 5,
Brown = 6,
LightGray = 7,
DarkGray = 8,
LightBlue = 9,
LightGreen = 10,
LightCyan = 11,
LightRed = 12,
LightMagenta = 13,
Yellow = 14,
White = 15
};
void SetColor(ConsoleColor text, ConsoleColor background)
{
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_
SetConsoleTextAttribute(
}
Файл first.h
void random (int*A,int n)
{int i;
for(i=0;i<n;i++)
{*(A+i)=-100+rand()%200;}}
void klava (int *A, int n)
{int i;
printf ("Введите элементы массива: \n\n");
for(i=0; i<n; i++)
{ printf("A[%d]=",i+1);
scanf("%d",&A[i]);
}
}
void file(char*name, int *A, int n)
{
int i;
FILE*f;
printf ("\n\nВведите имя файла: ");
scanf("%s",name);
f=fopen(name,"r");
for (i=0; i<n && !feof(f); i++)
{
if(fscanf(f,"%d",&A[i])==0)
break;
}
if(i<n)
while (i<n)
{
A[i]=-100+rand()%200;
i++;
}
}
void vivod (int *A, int n)
{int i;
for(i=0;i<n;i++)
{printf ("%5d",A[i]);}
}
void vivod2 (int *A, int n)
{int i;
for(i=0;i<n;i++)
{SetColor(LightGray,Black);
if (A[i]<0) SetColor(Red,Black);
printf ("%5d",A[i]);
}
printf("\n");
}
void obrabotka (int *A, int n, int p)
{
int i, j, tmp,k;
int *C;
C=new int[n];
k=0;
for (i=0; i<n; i++)
{
if(A[i]>0)
{
C[k]=A[i];
k++;
}
}
for (i = 1; i < k; i++)
{
j = i;
while (j > 0 && C[j - 1] > C[j])
{
tmp = C[j];
C[j] = C[j - 1];
C[j - 1] = tmp;
j--;
}
int l=0,q;
for (q=0; q<n; q++)
if (A[q] > 0)
{
A[q]=C[l];
l++;
}
if(p==1){
printf ("\n");
vivod2(A,n);}
}
if(p==2){
printf ("\n");
vivod2(A,n);}
}
void programma2(int vibor)
{
time_t t;
srand(time(&t));
setlocale (LC_ALL,"Russian");
int i,n;
int *A;
int p;
char name [20];
do
{
printf("Введите кол-во элементов массива: ");
scanf("%d",&n);
if (n<3||n>15) printf("Неверное значение. Введите повторно.\n\n");
}
while(n<3||n>15);
A = new int[n];
switch(vibor)
{
case 1: klava(A,n);break;
case 2: random(A,n);break;
default: file(name,A,n);
}
printf("\n\t\tИсходный массив:\n\n");
vivod(A,n);
printf("\n\n\n");
printf ("\t\tВыберите нужный вариант\n\n1. Пошаговый вывод\n2. Вывод результата\n\nВаш выбор:");
scanf("%d",&p);
printf("\n\t\tОтсортированный массив:\n\n");
obrabotka(A,n,p);
free(A);
delay (100000);
}
Файл second.h
void round (int R, int d)
{
int cv,bk;
int x,h=(int) d/50;
cv=0;
char ch;
setcolor(cv);
int i=1;
bk=rand()%15;
setbkcolor(bk);
setfillstyle(SOLID_FILL, bk);floodfill(1,1,0);
do
{
for(x=R; x<d-R; x+=h)
{
cv++;
if (cv>15) cv=1;
if(kbhit()==TRUE)
{
ch=getch();
if(ch==99)
{
bk=rand()%15; setfillstyle(SOLID_FILL, bk);
}
if(ch==27) exit(0);
}
setfillstyle (1,cv);
fillellipse(x,x,R,R);
delay(100);
i++;
if(i>3||x>=d-R)
{
setfillstyle(SOLID_FILL, bk);floodfill(200,2,cv);i=0;
}
}
}while (1);
}
void programma1()
{
initwindow(300,300);
do
round (50,300);
while(getch()!=27);
}
Файл third.h
#define Count 12
char N[Count][10]={"я","моя","мой",
char K[Count][10]={""мы","наша","
char separate[]=" .,!?:;";
int filesize (FILE*f,int cur)
{
int n;
char c;
n=0;
fseek(f,0,SEEK_SET);
while(!feof(f))
{
if (fread(&c,sizeof(c),1,f) > 0)
n++;
}
fseek(f,cur,SEEK_SET);
return n;
}
void zamena(FILE*f,fpos_t pos, int k)
{
int i=pos;
char c;
int size;
size=filesize(f,pos);
fseek(f,pos,SEEK_SET);
if(strlen(N[k])==strlen(K[k]))
fwrite(K[k],strlen(K[k]),1,f);
else
if(strlen(N[k])<strlen(K[k]))
//sdvig vpravo
{
for(i=size-1; i>pos; i--)
{
fseek(f,i,SEEK_SET);
fread(&c,1,1,f);
fseek(f,i+1,SEEK_SET);
fwrite(&c,1,1,f);
}
fseek(f,pos,SEEK_SET);
fwrite(K[k],strlen(K[k]),1,f);
}
else
// sdvig vlevo
{
for(i=pos+1; i<size; i++)
{
fseek(f,i,SEEK_SET);
fread(&c,1,1,f);
fseek(f,i-1,SEEK_SET);
fwrite(&c,1,1,f);
}
fseek(f,pos,SEEK_SET);
fwrite(K[k],strlen(K[k]),1,f);
}
}
int isseparate (char *s, char c)
{ int i;
for( i = 0; i < strlen (s); i++)
{
if (c==s[i]) break;
}
if (i<strlen(s)) return i;
else return -1;
}
int mestoimenie(char*s)
{int i;
for(i=0; i<Count; i++)
{
if (strcmp(s,N[i])==0)
{return i;
break;
}
}
return -1;
}
void vivod(char *s)
{
FILE *f;
char c;
f=fopen(s,"rb");
while(!feof(f))
{
fread(&c,sizeof(c),1,f) ;
printf("%c",c);
}
fclose(f);
}
void programma3()
{
setlocale(LC_ALL,"Russian");
char c;
char name[20];
printf ("Введите имя файла: ");
scanf("%s",name);
printf("\n\t\tИсходный файл\n");
vivod(name);
FILE *f;
fpos_t p;
int k;
char word[255];
char tmp[2];
word[0]='\0';
f=fopen(name,"rb+");
while (!feof(f))
{
while (!feof(f) )
{fread(&c,sizeof(c),1,f) ;
if(c!=32)
if( isseparate(separate,c)==-1) break;
}
if(!feof(f))
{
fgetpos(f,&p);
p-=sizeof(c);
tmp[0]=c;
tmp[1]='\0';
strcat(word,tmp);
while (!feof(f) && fread(&c,sizeof(c),1,f) > 0 && isseparate(separate,c)==-1)
{tmp[0]=c;
tmp[1]='\0';
strcat(word,tmp);
}
k=mestoimenie(word);
if(k!=-1) zamena(f,p,k);
p+=strlen(word)+1;
fseek(f,p,SEEK_SET);
word[0]='\0';
}
}
fclose(f);
printf("\n\n\n\t\tОбработанный файл\n");
vivod(name);
delay(100000);
}
Файл menu_f.h
#include "graphics.h"
#include "stdio.h"
#include "math.h"
#include "stdlib.h"
#include "string.h"
#define up 72
#define down 80
#define enter 13
#define esc 27
typedef struct
{
int x[5];
char *text;}key;
typedef struct
{key *p;
int n,m;}Menu;
void knopka(key *p,int active)
{
int poly[10];
if(active==0)
{
poly[0]=p->x[0]+35;
poly[1]=p->x[1]-24;
poly[2]=p->x[0]+85;
poly[3]=poly[1]+30;
poly[4]=p->x[0]+35;
poly[5]=poly[1]+1.6*p->x[2];
poly[6]=p->x[0]-12;
poly[7]=poly[1]+30;
}
else
{
poly[0]=p->x[0];
poly[1]=p->x[1]-20;
poly[2]=p->x[0]+1.6*p->x[2];
poly[3]=poly[1];
poly[4]=poly[2];
poly[5]=poly[1]+1.6*p->x[2];
poly[6]=poly[0];
poly[7]=poly[1]+1.6*p->x[2];
setfillstyle(1,DARKGRAY);
bar(poly[2],poly[3],poly[4]+6,
bar(poly[6]-5,poly[7],poly[4]+
setfillstyle(1,WHITE);
bar(poly[0]-5,poly[1]-5,poly[
bar(poly[0]-5,poly[1]-5,poly[
}
setfillstyle(1,14);
fillpoly(4,poly);
setbkcolor(14);
setcolor(RED);
outtextxy(p->x[0]+4,p->x[1]-1,
setbkcolor(3);}
void panel(int a,int b,int r)
{ int po[10];
po[0] = a-10;
po[1] = b-r-10;
po[2] = a+2*r+10;
po[3] = po[1];
po[4] = a+2*r+10;
po[5] = b+r+4*10+8*r;
po[6] = po[0];
po[7] = po[5];
po[8] = po[0];
po[9] = po[1];
setcolor(RED);
setlinestyle(0,0,3);
setfillstyle(1,RED);
fillpoly(5,po);
setcolor(DARKGRAY);
rectangle(po[2]+3,po[3]-1,po[
rectangle(po[6]-5,po[7]+3,po[
setcolor(WHITE);
rectangle(po[0]-6,po[1]-2,po[
rectangle(po[0]-6,po[1]-4,po[
}
Menu menu_initial (char *punkt[], int l,int top, int r, int n)
{
int i;
Menu M;
M.n=n;
M.m=0;
M.p=new key[n];
for(i=0;i<n;i++)
{
M.p[i].x[0]=l;
M.p[i].x[2]=r;
if(i==0)
{M.p[i].x[1]=top;}
else
{M.p[i].x[1]=M.p[i-1].x[1]+2*
M.p[i].text=new char[strlen(punkt[i])+1];
strcpy(M.p[i].text,punkt[i]);
}return M;
}
void menu_delete (Menu *M)
{ int i;
for(i=0;i<M->n;i++)
delete[]M->p[i].text;
delete []M->p;}
int menu (Menu *M,int l,int top, int r, int n,void panel(int a,int b,int r))
{int i;
char ch;
int active;
do
{
panel(l,top,r);
for(i=0;i<M->n;i++)
{if(M->m==i)
{active=1;
setcolor(WHITE);}
else
{active=0;}
knopka(&(M->p[i]),active);
setcolor(WHITE);}
ch=getch();
switch(ch)
{case up: if(M->m==0) M->m=M->n-1;
else (M->m)--;
break;
case down: if(M->m==M->n-1)
M->m=0;
else (M->m)++;}
}
while(ch!=enter&&ch!=esc);
if(ch==esc)M->m=M->n-1;
return M->m;}
Файл about.h
void about()
{FILE* f=fopen("about.txt","r");
char l[20];
char ch;
while(!feof(f))
{
fgets(l,60,f);
printf("%s\n",l);
}
fclose(f);
delay (100000);
}
Файл menu.cpp
#include "graphics.h"
#include "stdio.h"
#include "math.h"
#include "cl.h"
#include "stdlib.h"
#include "string.h"
#include "time.h"
#include "float.h"
#include <windows.h>
#include "locale.h"
#include "menu_f.h"
#include "second.h"
#include "first.h"
#include "third.h"
#include "about.h"
#define up 72
#define down 80
#define enter 13
#define esc 27
void main()
{setlocale( LC_ALL,"Russian" );
initwindow(800,600,"Меню");
int c=3;
setbkcolor(c);
cleardevice();
char *s[]={"FIGURE","SORT","FILES",
char *s1[]={"FIGURE","SORT","FILES"
char *s2[]={"CONSOLE","RANDOM","
int m=0,n=0;
int a=20,b=100,r=37,r1=37,a1=20,
Menu M=menu_initial (s,a,b,r,5);
do {
m=menu (&M,a,b,r,5,&panel);
switch(m)
{
case 0:
programma1();
setbkcolor(3);
cleardevice();
M=menu_initial (s,a,b,r,5);
break;
case 1:
{
int vibor;
Menu M=menu_initial (s2,150,165,40,4);
m=menu (&M,150,165,35,4,&panel);
switch(m)
{
case 0: vibor=1;
break;
case 1: vibor=2;
break;
case 2: vibor=3;
break;
case 3: vibor=0;
break;
}
if(vibor!=0)
{
closegraph();
programma2(vibor);
initwindow(800,600,"Меню");
}
setbkcolor(3);
M=menu_initial (s,a,b,r,5);
cleardevice();
break;
}
case 2:
closegraph();
programma3();
M=menu_initial (s,a,b,r,5);
break;
case 3:
closegraph();
about();
cleardevice();
break;
}
}
while(m!=4);
closegraph();
menu_delete (&M);
}
Файл 1.txt
-10 2 5 4 -3 -2 1 9 0 -6 7
Файл 2.txt
Добрый вечер, дамы и господа. Я и моя молодая команда, мне делают портрет.
Вчера мне купили мотоцикл и мой отец первым опробовал его.
Этот подарок мне? Спасибо, мне приятно.
Заинтересовался я в одной фирме, отправлю туда резюме.
Старая машина мне не нужна. Я купил новую.
Сегодня я думал, что мне не придётся выполнять эту работу.
Но меня заставили её сделать.
Работа была выполнена мною.
Поручение было выполнено мною.
Знакомый не позвал меня на праздник и я огорчился.
Файл about.txt
Данная курсовая работа посвящена созданию проекта для решения задач с использованием построения графических фигур, задачи сортировки и обработки текстовых файлов, а так же создания меню. Такие программы актуальны, поскольку являются частями различных программ для вычисления, текстовых и графических редакторов и значительно облегчают решения поставленных задач.
Инструкции по работе с программой:
Для перемещения по
пунктам меню используйте
Для выбора пункта меню нажмите клавишу "Enter".
Для ввода значений с клавиатуры - пункт "CONSOLE".
Для случайного формирования значений выберите пункт "RANDOM".
Для чтения значений из файла - пункт "FILE".
Информация об авторе:
ФИО: Стрельников Егор Александрович
ВУЗ: ДонНТУ
Группа: КН-13-Б
Год создания: 2014 г.