Программирование на С++

Автор: Пользователь скрыл имя, 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
Висновки
Список використаної літератури

Файлы: 1 файл

Курсовая.docx

— 206.46 Кб (Скачать)




 


 


 

 

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*35+120);

    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+119);

  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],x[5],x[6]);

  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-round(10*y),red);

  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],x[5],x[6]);

  if ((x[1]>=y[1])and(x[1]<=y[3])and(x[2]>=y[2])and(x[2]<=y[4])and(x[3]>=y[1])and(x[2]<=y[3])and(x[4]>=y[2])and(x[2]<=y[4])and(x[5]>=y[1])and(x[2]<=y[3])and(x[6]>=y[2])and(x[2]<=y[4])) then

  begin

   ab:=sqrt(sqr(x[3]-x[1])+sqr(x[4]-x[2]));

   bc:=sqrt(sqr(x[5]-x[3])+sqr(x[6]-x[4]));

   ca:=sqrt(sqr(x[1]-x[5])+sqr(x[2]-x[6]));

   p:=(ab+bc+ca)/2;

   s[k]:=sqrt(p*(p-ab)*(p-bc)*(p-ca))/100;

   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].x,pp[2].y,pp[3].x,pp[3].y);

  if ((pp[1].x>=y[1])and(pp[1].x<=y[3])and(pp[1].y>=y[2])and(pp[1].y<=y[4])and(pp[2].x>=y[1])and(pp[2].x<=y[3])and(pp[2].y>=y[2])and(pp[2].y<=y[4])and(pp[3].x>=y[1])and(pp[3].x<=y[3])and(pp[3].y>=y[2])and(pp[3].y<=y[4])) then

  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,"__________________\n");

fprintf(f,"|    X   |    Y   |\n");

fprintf(f,"__________________\n");

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,"___________________\n");

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],&x[1],&x[2],&x[3],&x[4],&x[5]);

  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[4],x[5]);

  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,ca,p;

initgraph(&gdriver, &gmode, "");

f=fopen("z2pr.txt","r");

fscanf(f,"%d%d%d%d",&y[0],&y[1],&y[2],&y[3]);

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],&x[1],&x[2],&x[3],&x[4],&x[5]);

  if ((x[0]>=y[0])&&(x[0]<=y[2])&&(x[1]>=y[1])&&(x[1]<=y[3])&&(x[2]>=y[0])&&(x[2]<=y[2])&&(x[3]>=y[1])&&(x[3]<=y[3])&&(x[4]>=y[0])&&(x[4]<=y[2])&&(x[5]>=y[1])&&(x[5]<=y[3]))

  {

   ab=sqrt(pow(x[2]-x[0],2)+pow(x[3]-x[1],2));

   bc=sqrt(pow(x[4]-x[2],2)+pow(x[5]-x[3],2));

   ca=sqrt(pow(x[0]-x[4],2)+pow(x[1]-x[5],2));

   p=(ab+bc+ca)/2;

   s[k]=sqrt(p*(p-ab)*(p-bc)*(p-ca))/100;

   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],&x[1],&x[2],&x[3],&x[4],&x[5]);

  if ((x[0]>=y[0])&&(x[0]<=y[2])&&(x[1]>=y[1])&&(x[1]<=y[3])&&(x[2]>=y[0])&&(x[2]<=y[2])&&(x[3]>=y[1])&&(x[3]<=y[3])&&(x[4]>=y[0])&&(x[4]<=y[2])&&(x[5]>=y[1])&&(x[5]<=y[3]))

  {

   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);

}

 

 

 

 

 

 

 

 

 

 

 

 

 

    1. Результати роботи програм розв’язання задач

 

 

 

Висновки

Виконавши дану курсову роботу, я узагальнив і закріпив свої знання з курсу програмування мовами Сі та Turbo Pascal, оволодів основними навичками з використання можливостей даних мов програмування. Названі мови програмування досить схожі, але є суттєві структурні відмінності. На відміну від мови Turbo Pascal, яка є навчальною мовою програмування, мова програмування Сі – є об’єктно-орієнтованою мовою програмування і використовується для вирішення реальних задач.

Під час виконання курсової роботи основним завданням було правильно  побудувати алгоритм роботи програм, організувати зручний і зрозумілий для користувача  інтерфейс. Після написання програм  і перевірки їх на роботоздатність, деякі процедури та функції були змінені для зменшення розмірів коду та підвищення його ефективності.

Результати виконання  програм співпали, це доводить правильність їхньої роботи.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Список використаної літератури

 

1. С.А. Немнюгін  “Turbo Pascal” – СП, “ Питер “, 2000р.

2. В.І. Гризлов, Т.П. Гризлова  “Турбо Паскаль 7.0” – М., “Лайт”, 1999р.

3. Н.Д. Васькова  В.В. Тюляєва   “Практикум по основам программирования” – М., “Высшая школа”, 1991р.

  1. Шимчук Л.М. «Методичні вказівки до виконання курсової роботи з дисципліни ОПАМ» Сміла, СТХТ НУХТ, 2007р.
  2. Керниган Б. Ритчи Д. Язык программирования Си. СПб. «Невский Диалект»,2001 -353 с.
  3. Х.М.Дейтел., П.Дж.Дейтел. Как программировать на Си++. М .: ЗАО БИНОМ, 1999, 1000 с.
  4. Аммерал Л. Программирование графики на Турбо Си. Пер. с англ. М., "Сол Систем", 1992.
  5. С. Прата. Язык программирования Си. Киев, ДиаСофт, 2001.
  6. Безбородов Ю. М.  Индивидуальная отладка программ. - М.: Наука, 1982. – 192 с.

Информация о работе Программирование на С++