Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Программирование на C / C++ / Лабораторные работы2 / УГАТУ АСОИ-136 пр-ние на ЯВУ лаб.№1 вар.__Юлия

.doc
Скачиваний:
18
Добавлен:
02.05.2014
Размер:
76.8 Кб
Скачать

Уфимский государственный авиационный технический университет

Кафедра АСУ

Отчёт

по лабораторной работе №1

по дисциплине ”Программирование на ЯВУ”.

вариант №16.

Выполнил: студент группы АСОИ-136

Татаринцева Ю. Проверил: доцент кафедры АПРиС

Фёдорова Н.И.

Уфа 2007.

Тема: Простейшие программы на языке С++.

Цель работы: получение навыков составления и отладки простейших программ на языке С++.

Вариант №16.

Задание:

а) Треугольник задан своими вершинами (x1,y1),(x2,y2),(x3,y3). Найти высоты треугольника.

Решение:

, где S – площадь тр-ка; a,b,c – стороны тр-ка;

ha, hb, hc – высоты тр-ка.

Блок-схема

Текст программы на С++

#include<iostream.h>

#include<conio.h>

#include<math.h>

void main()

{double x1,y1,x2,y2,x3,y3,a,b,c,S,ha,hb,hc,p;

clrscr();

cout<<"введите координаты 1-й точки\n";

cout<<"x1=";

cin>>x1;

cout<<"y1=";

cin>>y1;

cout<<"введите координаты 2-й точки\n";

cout<<"x2=";

cin>>x2;

cout<<"y2=";

cin>>y2;

cout<<"введите координаты 3-й точки\n";

cout<<"x3=";

cin>>x3;

cout<<"y3=";

cin>>y3;

a=sqrt(pow((x2-x1),2)+pow((y2-y1),2));

b=sqrt(pow((x3-x2),2)+pow((y3-y2),2));

c=sqrt(pow((x1-x3),2)+pow((y1-y3),2));

p=(a+b+c)/2;

S=sqrt(p*(p-a)*(p-b)*(p-c));

ha=2*S/a; hb=2*S/b; hc=2*S/c;

cout<<"ha="<<ha<<" hb="<<hb<<" hc="<<hc;

getch();

}

Проверка:

При x1=0,y1=0,x2=3,y2=0,x3=0,y3=3;

ha=3, hb= 2,12, hc=3;

б) Заданы прямая ax+by+c=0 и отрезок своими концами (x1,y1) и (x2,y2) Определить, как расположены они друг относительно друга: отрезок пересекает прямую, отрезок лежит на прямой, отрезок лежит полностью по одну сторону от прямой.

Решение:

Рассмотрим первый случай: Рассмотрим второй случай:

b=0 => ax+c=0; x=-c/a; b<>0=> y=-(ax+c)/b;

dif1=±(X1- X главное) dif1=(y1-y1 прямой)

dif2=±(X2- X главное) dif1=(y1-y1 прямой)

1) dif1=0 и dif2=0 – совпадают

2) (dif1<0 и dif2>0) или (dif1>0 и dif2<0)

– пересекаются

3)(dif1<0 и dif2<0) или (dif1>0 и dif2>0)

– по одну сторону

4) (dif1=0 и dif2<>0) или (dif1<>0 и dif2=0)

– имеют одну общую точку

1) dif1=0 и dif2=0 – совпадают

2) (dif1<0 и dif2>0) или (dif1>0 и dif2<0)

– пересекаются

3)(dif1<0 и dif2<0) или (dif1>0 и dif2>0)

– по одну сторону

4) (dif1=0 и dif2<>0) или (dif1<>0 и dif2=0)

– имеют одну общую точку

Блок-схема

Текст программы на С++

#include<iostream.h>

#include<conio.h>

#include<math.h>

void main()

{float a,b,c,x1,y1,x2,y2,y_line1,y_line2,x_line,dif1,dif2;

clrscr();

cout<<"vvedite znachenhia a,b,c,x1,y1,x2,y2\n";

cout<<"a=";

cin>>a;

cout<<"b=";

cin>>b;

cout<<"c=";

cin>>c;

cout<<"x1=";

cin>>x1;

cout<<"y1=";

cin>>y1;

cout<<"x2=";

cin>>x2;

cout<<"y2=";

cin>>y2;

if(b==0)

{

x_line=(-c/a);

dif1=x_line-x1;

dif2=x_line-x2;

if(dif1==0&dif2==0)

cout<<"otrezok lejit na priavoy";

if((dif1==0)&(dif2!=0))

cout<<"priamaya i otrezok imeut odny obschyu tochky";

else

if((dif1!=0)&(dif2==0))

cout<<"priamaya i otrezok imeut odny obschyu tochky";

if((dif1<0)&(dif2>0))

cout<<"priamaya i otrezok imeut odny obschyu tochky";

else

if((dif1>0)&(dif2<0))

cout<<"priamaya i otrezok peresekautsia";

if((dif1<0)&(dif2<0))

cout<<"priamaya i otrezok ne peresekautsia";

else

if((dif1>0)&(dif2>0))

cout<<"priamaya i otrezok ne peresekautsia";

}

if(b!=0)

{

y_line1=-(a*x1+c)/b;

y_line2=-(a*x2+c)/b;

dif1=y_line1-y1;

dif2=y_line2-y2;

if(dif1==0&dif2==0)

cout<<"otrezok lejit na priavoy";

if((dif1==0)&(dif2!=0))

cout<<"priamaya i otrezok imeut odny obschyu tochky";

else

if((dif1!=0)&(dif2==0))

cout<<"priamaya i otrezok imeut odny obschyu tochky";

if((dif1<0)&(dif2>0))

cout<<"priamaya i otrezok imeut odny obschyu tochky";

else

if((dif1>0)&(dif2<0))

cout<<"priamaya i otrezok peresekautsia";

if((dif1<0)&(dif2<0))

cout<<"priamaya i otrezok ne peresekautsia";

else

if((dif1>0)&(dif2>0))

cout<<"priamaya i otrezok ne peresekautsia";

}

getch();

}Проверка:

a=-2, b=0, c=8; x1=2, y1=5, x2=6, y2=0 результат: прямая и отрезок пересекаются.

а=2, b=2, с=2; x1=0, y1=-4, x2=6, y2=0 результат: прямая и отрезок имеют одну общую точку.

а=2, b=2, с=2; x1=0, y1=-1, x2=3, y2=-4 результат: отрезок лежит на прямой.