Программирование на C / C++ / Лабораторные работы2 / УГАТУ АСОИ-136 пр-ние на ЯВУ лаб.№1 вар.№ макс
.docУфимский государственный авиационный технический университет
Кафедра АСУ
Отчёт
по лабораторной работе №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)
Рассмотрим всевозможные случаи:
-
окр-сти не пересекаются и находятся вне друг друга.
-
Окр-сти касаются друг друга.
-
Окр-сти пересекаются.
-
Одна из окр-стей находится внутри другой и касается её.
-
Одна из окр-стей находится внутри другой, её не касаясь.
-
Окр-сти совмещаются.
Для начала узнаем который из радиусов больше. Обозначим их
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;
результат: окр-сти совмещаются.