Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.03.2013, 16:33   #1
Наталья Михайловна
Новичок
Джуниор
 
Регистрация: 21.02.2013
Сообщений: 2
По умолчанию Вычислить длину линии разреза (Java(NetBeans IDE 7.2.1))

Составить алгоритм и написать код программы, вычисляющей длину линии вертикального разреза фигуры y_razrez, значения площадей фигуры слева и справа от линии разреза s_left, s_right, по значениям аргумента x, введенным с консоли:
Изображения
Тип файла: jpg 1.jpg (21.9 Кб, 157 просмотров)
Наталья Михайловна вне форума Ответить с цитированием
Старый 05.03.2013, 17:39   #2
alexander13
Форумчанин
 
Аватар для alexander13
 
Регистрация: 07.02.2013
Сообщений: 267
По умолчанию

А в чем проблема?
Там фрагменты трех окружностей.. в зависимости от х определяем у.. типа
Код:
if (x <= 1) {
   y1 = sqrt(1-(x-1)*(x-1));
   y2 = -y1;
} else {
   y1 = sqrt(1-(x-2)*(x-2)) - 1;
   y2 = -sqrt(1-(x-2)*(x-2)) + 1;
}
Зная координаты двух точек, элементарно найти длину отрезка, их соединяющего.
Ну, а методов поиска площадей вообще много.

Upd.
Причем, учитывая, что фигура симметрична относительно Ох, достаточно искать площадь только верхней половины и удваивать ее. Ну, для левой и правой частей отдельно, естественно.

Upd.2
А если еще точнее, то для одной из частей. Потому что общая площадь фигуры известна и постоянна и, найдя одну из площадей, автоматически находится вторая. Вооот..

Upd.3
На Си примерно так будет
Код:
#include <stdio.h>
#include <math.h>

int main (int argc, char **argv) 
{
	double x, y1, y2;
	double S1, S2, sLeft, sRight, phi;
	
	printf ("Enter x: ");
	scanf ("%lf", &x);

	S1 = M_PI / 2;
	S2 = 2 - M_PI / 2;
	
	if ((x < 0) || (x > 2))
	{
		printf ("X out of range\n");
		return -1;
	}
	
	
	if (x == 1)
	{
		y1 = 1;
		y2 = -1;
		phi = M_PI;
		sLeft = S1;
		sRight = S2;   
	}
	else if (x < 1)
	{
		y1 = sqrt(1 - (x - 1) * (x - 1));      
		y2 = -y1;
		phi = 2 * atan (fabs (y2 - y1) / 2 / (1 - x));
		sLeft = (float) 1 / 2 * (phi - sin (phi));
		sRight = S1 + S2 - sLeft;
	} 
	else 
	{
		y1 = sqrt(1 - (x - 2) * (x - 2)) - 1;
		y2 = -sqrt(1 - (x - 2) * (x - 2)) + 1;
		phi = 2 * atan (fabs (y2 - y1) / 2 / x);
		sRight = (float) 1 / 2 * (phi - sin (phi));
		sLeft = S1 + S2 - sRight;		
	}

	printf ("Length: %lf\n", fabs (y2 - y1));
	printf ("S : %lf\n", S1 + S2);
	printf ("sLeft : %lf\n", sLeft);
	printf ("sRight : %lf\n", sRight);	
	
        getch();
	return 0;
}
Можно как-нибудь оптимизировать, наверное.. Ну этим Вы уж сами займитесь.
Μολὼν λαβέ

Последний раз редактировалось alexander13; 05.03.2013 в 18:36.
alexander13 вне форума Ответить с цитированием
Старый 06.03.2013, 06:46   #3
Наталья Михайловна
Новичок
Джуниор
 
Регистрация: 21.02.2013
Сообщений: 2
По умолчанию

Спасибо. ..Моя проблема заключалась в нахождении площади правой фигуры (напряг у меня с геометрией..).
Наталья Михайловна вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Длина линии вертикального разреза (Pascal) Viload Python 6 04.10.2012 12:19
Как вычислить длину ломаной линии ? можете подсказать Sylar9 Общие вопросы C/C++ 3 27.06.2012 17:38
NetBeans Ide Храмовник2012 Общие вопросы по Java, Java SE, Kotlin 1 17.04.2012 21:20
Длина линии вертикального разреза фигуры fbsd Помощь студентам 4 07.02.2012 21:20
JAVA in Netbeans IDE ilhom.m Общие вопросы по Java, Java SE, Kotlin 1 09.07.2009 11:26