Автор: Пользователь скрыл имя, 25 Декабря 2012 в 00:41, курсовая работа
1. Виконати табуляцію параметрично заданої функції (Циклоїда), записати її у файл та вивести його на екран.
2. У файлі задано координати вершин прямокутника з горизонтальними та вертикальними сторонами. В іншому файлі задано координати вершин трикутників. Вивести на екран прямокутник та трикутники, що цілком лежать всередині прямокутника. Окремим кольором виділити найбільший та найменший за площею трикутники.
Вступ
Порівняння мов програмування Turbo Pascal та Сі………………………5
2. Розробка алгоритмів розв‘язання задач…………………………………....8
3. Розробка блок-схем інтерфейсу та розв’язання задач
3.1. Процедура poln………………………………………………………10
3.2. Процедура zagolovok………………………………………………...11
3.3. Функції obx та oby…………………………………………………...11
3.4. Процедура tab………………………………………………………...11
3.5. Процедури umova1 та umova2……………………………………...12
3.6. Процедура readtab…………………………………………………...12
3.7. Процедура readkor…………………………………………………...13
3.8. Процедура graph……………………………………………………..13
3.9. Процедура graph2……………………………………………………14
3.10. Головне тіло програми……………………………………………...15
4. Розробка програм розв‘язання задач
4.1. Програма на мові Turbo Pascal………………………………………16
4.2. Програма на мові Сі………………………………………………….21
5. Результати роботи програм розв’язання задач…………………………...26
Висновки
Список використаної літератури
3.10. Головне тіло програми:
4. Розробка програм розв‘язання задач
4.1. Програма на мові Turbo Pascal
program m1;
uses crt,graph;
const mas:array[1..5] of string=('Ymova','Stvorennya failu','Vuvedennya failu','Graphic','Nazad');
mas2:array[1..5] of string=('Zagolovok','Zavdannya #1','Zavdannya #2','Exit','');
mas3:array[1..5] of string=('Ymova','Vuvedennya failu','Graphic','Nazad','');
type ms=array[1..5] of string;
var h,h1,gd,gm:integer;
a,b,x,y,t,krok:real;
ch:char;
procedure poln(m:ms;kp:byte);
var c:integer;
begin
gd:=detect;
initgraph(gd,gm,'');
if GraphResult <> grok then halt(1);
cleardevice;
h:=1;
h1:=1;
setfillstyle(8,1);
bar(1,1,639,479);
settextstyle(0,0,0);
setfillstyle(1,8);
for c:=1 to kp do
begin
setcolor(15);
rectangle(160,c*35+95,480,c*
bar(161,c*35+96,479,c*35+119);
setcolor(0);
outtextxy(170,c*35+104,m[c]);
end;
setfillstyle(1,0);
bar(161,132,479,154);
setcolor(15);
outtextxy(170,139,m[1]);
repeat
repeat
ch:=readkey;
until ch in [#72,#80,#13,#27];
case ch of
#72: h:=h-1;
#80: h:=h+1;
end;
if h=kp+1 then h:=1;
if h=0 then h:=kp;
setfillstyle(1,8);
bar(161,h1*35+96,479,h1*35+
setcolor(0);
outtextxy(170,h1*35+104,m[h1])
setfillstyle(1,0);
bar(161,h*35+96,479,h*35+119);
setcolor(15);
outtextxy(170,h*35+104,m[h]);
h1:=h;
until (ch=#13);
CloseGraph;
end;
procedure zagolovok;
var f:text;s:string;
begin
assign(f,'zag.txt');
reset(f);
while not eof(f) do
begin
readln(f,s);
writeln(s);
end;
close(f);
readkey;
end;
procedure umova2;
var f:text;s:string;
begin
assign(f,'z2umova.txt');
reset(f);
while not eof(f) do
begin
readln(f,s);
writeln(s);
end;
close(f);
readkey;
end;
procedure umova1;
var f:text;s:string;
begin
assign(f,'z1umova.txt');
reset(f);
while not eof(f) do
begin
readln(f,s);
writeln(s);
end;
close(f);
readkey;
end;
function obx(a_,b_,t_:real):real;
begin
obx:=a_*t_-b_*sin(t_);
end;
function oby(a_,b_,t_:real):real;
begin
oby:=a_-b_*cos(t_);
end;
procedure tab;
var f:text;
begin
t:=0.1;
assign(f,'z1.txt');
rewrite(f);
write('Vvedit a ->');
readln(a);
write('Vvedit b ->');
readln(b);
write('Vvedit krok ->');
readln(krok);
writeln(f,'___________________
writeln(f,'| X | Y |');
writeln(f,'___________________
while t<2*3.14 do
begin
x:=obx(a,b,t);
y:=oby(a,b,t);
writeln(f,'| ',x:6:2,' | ',y:6:2,' |');
t:=t+krok;
end;
writeln(f,'___________________
close(f);
writeln('Fail stvoreno!');
readkey;
end;
procedure readkor;
var x:array[1..6] of integer;
f:text;
k:integer;
begin
clrscr;
assign(f,'z2pr.txt');
reset(f);
writeln('Koordunati vershun pryamokytnika:');
readln(f,x[1],x[2]);
writeln('x1 = ',x[1],' y1 = ',x[2]);
readln(f,x[1],x[2]);
writeln('x2 = ',x[1],' y2 = ',x[2]);
close(f);
assign(f,'z2tr.txt');
reset(f);
writeln('Koordunati vershun trikytnukiv:');
k:=1;
while not eof(f) do
begin
readln(f,x[1],x[2],x[3],x[4],
writeln(k,' trukytnuk');
writeln('x = ',x[1],' y = ',x[2]);
writeln('x = ',x[3],' y = ',x[4]);
writeln('x = ',x[5],' y = ',x[6]);
k:=k+1;
end;
close(f);
readkey;
end;
procedure graph;
begin
gd:=detect;
initgraph(gd,gm,'');
if GraphResult <> grok then halt(1);
cleardevice;
line(0,240,640,240);
line(320,0,320,480);
line(630,235,640,240);
line(630,245,640,240);
line(325,10,320,0);
line(315,10,320,0);
outtextxy(330,0,'Y');
outtextxy(637,250,'X');
outtextxy(325,245,'0');
t:=0.01;
while (t<2*3.14) do
begin
x:=obx(a,b,t);
y:=oby(a,b,t);
putpixel(320+round(15*x),240-
t:=t+0.01;
end;
readkey;
closegraph;
end;
procedure graph2;
var x:array[1..8] of integer;
y:array[1..4] of integer;
pp:array[1..4] of pointtype;
k:integer;
max,min,ab,bc,ca,p:real;
s:array[1..10] of real;
f:text;
begin
gd:=detect;
initgraph(gd,gm,'');
if GraphResult <> grok then halt(1);
cleardevice;
assign(f,'z2pr.txt');
reset(f);
readln(f,y[1],y[2],y[3],y[4]);
close(f);
rectangle(y[1],y[2],y[3],y[4])
assign(f,'z2tr.txt');
reset(f);
k:=1;
max:=0;
min:=50000;
while not eof(f) do
begin
readln(f,x[1],x[2],x[3],x[4],
if ((x[1]>=y[1])and(x[1]<=y[3])
begin
ab:=sqrt(sqr(x[3]-x[1])+sqr(x[
bc:=sqrt(sqr(x[5]-x[3])+sqr(x[
ca:=sqrt(sqr(x[1]-x[5])+sqr(x[
p:=(ab+bc+ca)/2;
s[k]:=sqrt(p*(p-ab)*(p-bc)*(p-
if (s[k]>max) then max:=s[k];
if (s[k]<min) then min:=s[k];
k:=k+1;
end;
end;
close(f);
assign(f,'z2tr.txt');
reset(f);
k:=1;
while not eof(f) do
begin
readln(f,pp[1].x,pp[1].y,pp[2]
if ((pp[1].x>=y[1])and(pp[1].x<=
begin
pp[4]:=pp[1];
if (s[k]=max) then
begin
setcolor(4);
drawpoly(4,pp);
end
else if (s[k]=min) then
begin
setcolor(2);
drawpoly(4,pp);
end
else begin
setcolor(15);
drawpoly(4,pp);
end;
k:=k+1;
end;
end;
close(f);
readkey;
closegraph;
end;
procedure readtab;
var f:text;
s:string;
begin
assign(f,'z1.txt');
reset(f);
while not eof(f) do
begin
readln(f,s);
writeln(s);
end;
readkey;
close(f);
end;
begin
h:=1;
h1:=1;
repeat
clrscr;
poln(mas2,4);
case h1 of
1:zagolovok;
2:begin
repeat
clrscr;
poln(mas,5);
case h1 of
1:umova1;
2:tab;
3:readtab;
4:graph;
end;
until (h1=5);
end;
3:begin
repeat
clrscr;
poln(mas3,4);
case h1 of
1:umova2;
2:readkor;
3:graph2;
end;
until (h1=4);
end;
4:exit;
end;
until keypressed;
end.
4.2. Програма на мові Сі
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <graphics.h>
float a,b,t=0.1,x,y,krok;
int temp1,temp2,temp;
char str[80];
FILE *f;
void zagolovok()
{
clrscr();
f=fopen("zag.txt","r");
while(fgets(str,80,f)!=NULL)
puts(str);
fclose(f);
getch();
}
float obx(float a_,float b_,float t_)
{
return a_*t_-b_*sin(t_);
}
float oby(float a_,float b_,float t_)
{
return a_-b_*cos(t_);
}
void tab()
{
clrscr();
f=fopen("z1.txt","w");
printf("Vvedit a ->");
scanf("%f",&a);
printf("Vvedit b ->");
scanf("%f",&b);
printf("Vvedit krok ->");
scanf("%f",&krok);
fprintf(f,"__________________\
fprintf(f,"| X | Y |\n");
fprintf(f,"__________________\
while (t<2*M_PI)
{
x=obx(a,b,t);
y=oby(a,b,t);
fprintf(f,"| %6.2f | %6.2f |\n",x,y);
t+=krok;
}
fprintf(f,"___________________
fclose(f);
printf("Fail stvoreno!");
getch();
}
void umova1()
{
clrscr();
f=fopen("z1umova.txt","r");
while(fgets(str,80,f)!=NULL)
puts(str);
fclose(f);
getch();
}
void umova2()
{
clrscr();
f=fopen("z2umova.txt","r");
while(fgets(str,80,f)!=NULL)
puts(str);
fclose(f);
getch();
}
void readtab()
{
clrscr();
f=fopen("z1.txt","r");
while(fgets(str,80,f)!=NULL)
puts(str);
fclose(f);
getch();
}
void readkor()
{
int x[5];
clrscr();
f=fopen("z2pr.txt","r");
printf("Koordunati vershun pryamokytnika: \n");
fscanf(f,"%d%d",&x[0],&x[1]);
printf("x1 = %d\ty1 = %d\t\n",x[0],x[1]);
fscanf(f,"%d%d",&x[0],&x[1]);
printf("x2 = %d\ty2 = %d\t\n",x[0],x[1]);
fclose(f);
f=fopen("z2tr.txt","r");
printf("Koordunati vershun trikytnukiv: \n");
int k=1;
while(!feof(f))
{
fscanf(f,"%d%d%d%d%d%d",&x[0],
printf("%d trukytnuk:\nx = %d\ty = %d\nx = %d\ty = %d\nx
= %d\ty = %d\n",k,x[0],x[1],x[2],x[3],x[
k++;
}
fclose(f);
getch();
}
void graph(float a_,float b_)
{
float t=0.01,x,y;
int gdriver = DETECT, gmode;
initgraph(&gdriver, &gmode, "");
line(0,240,640,240);
line(320,0,320,480);
line(630,235,640,240);
line(630,245,640,240);
line(325,10,320,0);
line(315,10,320,0);
outtextxy(330,0,"Y");
outtextxy(630,250,"X");
outtextxy(325,245,"0");
while (t<2*M_PI)
{
x=obx(a_,b_,t);
y=oby(a_,b_,t);
putpixel(320+x*15,240-y*10,4);
t+=0.01;
}
getch();
closegraph();
}
void graph2()
{
int gdriver = DETECT, gmode,x[7],y[3],k=0;
float max=0,min=50000,s[10],ab,bc,
initgraph(&gdriver, &gmode, "");
f=fopen("z2pr.txt","r");
fscanf(f,"%d%d%d%d",&y[0],&y[
fclose(f);
rectangle(y[0],y[1],y[2],y[3])
f=fopen("z2tr.txt","r");
while(!feof(f))
{
fscanf(f,"%d%d%d%d%d%d",&x[0],
if ((x[0]>=y[0])&&(x[0]<=y[2])&&(
{
ab=sqrt(pow(x[2]-x[0],2)+pow(
bc=sqrt(pow(x[4]-x[2],2)+pow(
ca=sqrt(pow(x[0]-x[4],2)+pow(
p=(ab+bc+ca)/2;
s[k]=sqrt(p*(p-ab)*(p-bc)*(p-
if (s[k]>max) max=s[k];
if (s[k]<min) min=s[k];
k++;
}
}
fclose(f);
f=fopen("z2tr.txt","r");
k=0;
while(!feof(f))
{
fscanf(f,"%d%d%d%d%d%d",&x[0],
if ((x[0]>=y[0])&&(x[0]<=y[2])&&(
{
x[6]=x[0];
x[7]=x[1];
if (s[k]==max)
{
setcolor(4);
drawpoly(4,x);
}
else if (s[k]==min)
{
setcolor(2);
drawpoly(4,x);
}
else
{
setcolor(15);
drawpoly(4,x);
}
k++;
}
}
fclose(f);
getch();
closegraph();
}
void main()
{
do
{
clrscr();
printf("1 - Zagolovok;\n2 - Zavdannya #1;\n3 - Zavdannya #2;\n4 - Exit;\n");
scanf("%d",&temp);
switch(temp)
{
case 1:zagolovok();break;
case 2:
{
do
{
clrscr();
printf("1 - umova;\n2 - stvorennya failu;\n");
printf("3 - vuvedennya vmistu failu;\n4 - graphic;\n5 - Nazad\n");
scanf("%d",&temp1);
switch(temp1)
{
case 1:umova1();break;
case 2:tab();break;
case 3:readtab();break;
case 4: graph(a,b);break;
}
}
while (temp1!=5);break;
}
case 3:
{
do
{
clrscr();
printf("1 - umova;\n2 - vuvedennya vmistu failu;\n");
printf("3 - graphic;\n4 - Nazad\n");
scanf("%d",&temp1);
switch(temp1)
{
case 1:umova2();break;
case 2:readkor();break;
case 3:graph2();break;
}
}
while (temp1!=4);break;
}
case 4:exit(1);
}
}
while(1);
}
Висновки
Виконавши дану курсову роботу, я узагальнив і закріпив свої знання з курсу програмування мовами Сі та Turbo Pascal, оволодів основними навичками з використання можливостей даних мов програмування. Названі мови програмування досить схожі, але є суттєві структурні відмінності. На відміну від мови Turbo Pascal, яка є навчальною мовою програмування, мова програмування Сі – є об’єктно-орієнтованою мовою програмування і використовується для вирішення реальних задач.
Під час виконання курсової роботи основним завданням було правильно побудувати алгоритм роботи програм, організувати зручний і зрозумілий для користувача інтерфейс. Після написання програм і перевірки їх на роботоздатність, деякі процедури та функції були змінені для зменшення розмірів коду та підвищення його ефективності.
Результати виконання програм співпали, це доводить правильність їхньої роботи.
Список використаної літератури
1. С.А. Немнюгін “Turbo Pascal” – СП, “ Питер “, 2000р.
2. В.І. Гризлов, Т.П. Гризлова “Турбо Паскаль 7.0” – М., “Лайт”, 1999р.
3. Н.Д. Васькова В.В. Тюляєва “Практикум по основам программирования” – М., “Высшая школа”, 1991р.