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

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

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

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

Кафедра АСУ

Отчёт

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

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

вариант №__.

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

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

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

Уфа 2007.

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

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

Вариант №__.

Задание:

а) Задан четырехугольник на плоскости с координатами его вершин. Найти периметр этого четырехугольника.

Решение:

Р=AB+BC+CD+DA, где P – периметр четырехугольника,

AB,BC,CD,DA – его стороны .

Задача сводится к тому, что необходимо найти длины сторон этого четырехугольника.

AB=sqrt((x2-x1)2+(y2-y1)2)

BC=…………………….

………………………….;

P=AB+BC+CD+DA.

Блок-схема

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

#include<iostream.h>

#include<math.h>

#include<conio.h>

void main()

{double P,a,b,c,d,x1,y1,x2,y2,x3,x4,y3,y4;

clrscr();

cout<<"vvedite koordinaty 1-i tochki \nx=";

cin>>x1;

cout<<"y=";

cin>>y1;

cout<<"vvedite koordinaty 2-i tochki \nx=";

cin>>x2;

cout<<"y=";

cin>>y2;

cout<<"vvedite koordinaty 3-i tochki \nx=";

cin>>x3;

cout<<"y=";

cin>>y3;

cout<<"vvedite koordinaty 4-i tochki \nx=";

cin>>x4;

cout<<"y=";

cin>>y4;

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

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

c=sqrt(pow((x3-x4),2)+pow((y3-y4),2));

d=sqrt(pow((x4-x1),2)+pow((y4-y1),2));

P=a+b+c+d;

cout<<"perimetr ABCD="<<P;

getch();

}

Проверка:

x1=0,x2=0,x3=1,x4=1,y1=0,y2=1,y3=1,y4=0; результат = 1

x1=2,x2=8,x3=7,x4=4,y1=5,y2=4,y3=3,y4=2; результат = 14.264805

б) Заданы 2 окружности с радиусами R1 и R2 и центрами (x1,y1) (x2,y2).

Определить как они расположены относительно друг друга.

Решение:

A(x1,y1) – центр 1-й окр-сти.

B(x2,y2) – центр 2-й окр-сти.

AB – расстояние м/у ними.

AB=sqrt((x1-x2)2+(y1-y2)2)

Рассмотрим всевозможные случаи:

  1. окр-сти не пересекаются и находятся вне друг друга.

  2. Окр-сти касаются друг друга.

  3. Окр-сти пересекаются.

  4. Одна из окр-стей находится внутри другой и касается её.

  5. Одна из окр-стей находится внутри другой, её не касаясь.

  6. Окр-сти совмещаются.

Для начала узнаем который из радиусов больше. Обозначим их

R – больший радиус, r – меньший радиус.

Рассмотрим 3 случая:

а) если AB>R (когда центры окр-стей не лежат в площади другой)

1) при (AB-R)<=r, окр-сти пересекаются.

2) при (AB-R)>r, окр-сти не пересекаются и лежат вне друг друга.

б) если AB=R (когда центр меньшей окр-сти лежит на большей)

1) окр-сти пересекаются.

в) если AB<R (когда центр меньшей окр-сти находится внутри большей)

1) при (R-AB)<r, окр-сти пересекаются.

2) при (R-AB)=r, меньшая окр-сть находится внутри большей и касается её.

3) при(R-AB)>r, меньшая окр-сть находится внутри большей, не касаясь.

4) при AB=0 и R1=R2, окр-сти совмещаются.

Блок-схема

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

#include<iostream.h>

#include<math.h>

#include<conio.h>

void main()

{double x1,y1,x2,y2,R1,R2,R,r,AB;

clrscr();

cout<<"vvedite koordinaty i radiys 1-i okr-sti\nx=";

cin>>x1;

cout<<"y=";

cin>>y1;

cout<<"R=";

cin>>R1;

cout<<"vvedite koordinaty i radiys 2-i okr-sti\nx=";

cin>>x2;

cout<<"y=";

cin>>y2;

cout<<"R=";

cin>>R2;

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

if(R1>R2)

{

R=R1;r=R2;

if(AB<R)

if((R-AB)<r)

cout<<"okr-sti peresekaiytsua";

else

if((R-AB)==r)

cout<<"men'shaya okr-st' nahoditsya v bol'shei okr-sti i kasaetsya ee";

else cout<<"men'shaya okr-st' nahoditsya v bol'shei okr-sti";

else

if(AB>R)

if((AB-R)>r)

cout<<"okr-sti ne peresekautsya i nahodyatsya vne dryg dryga";

else

if((AB-R)==r)

cout<<"okr-sti kasautsya dryg dryga";

else

cout<<"okr-sti peresekautsya";

else

cout<<"okr peresekautsya";

}

else

{

R=R2;r=R1;

if(AB<R)

if((R-AB)<r)

cout<<"okr-sti peresekaiytsua";

else

if((R-AB)==r)

if (AB==0&&R1==R2) cout<<"okr-sti sovmeschautsya";

else

cout<<"men'shaya okr-st' nahoditsya v bol'shei okr-sti i kasaetsya ee";

else cout<<"men'shaya okr-st' nahoditsya v bol'shei okr-sti";

else

if(AB>R)

if((AB-R)>r)

cout<<"okr-sti ne peresekautsya i nahodyatsya vne dryg dryga";

else

if((AB-R)==r)

cout<<"okr-sti kasautsya dryg dryga";

else

cout<<"okr-sti peresekautsya";

else

cout<<"okr peresekautsya";

}

getch();

}

Проверка:

x1=1,y1=1,R1=1,x2=5,y2=1,R2=2;

результат: окр-сти не пересекаются и находятся вне друг друга.

x1=1,y1=1,R1=1,x2=3,y2=3,R2=2;

результат: окр-сти пересекаются. x1=5,y1=6,R1=8,x2=5,y2=6,R2=8;

результат: окр-сти совмещаются.