Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 26.10.2013
Сообщений: 24

Математическая задача на C++

26.01.2014, 16:44. Показов 1641. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
И снова я. Пожалуйста помогите переделать программу на нужную.

Суть задачи такова:
С клавиатуры вводится радиус окружности с центром в начале координат. Найти координаты точек пересечения окружности с синусоидой на промежутке от 0 до π и сформировать из них множество А.

Я имею код в котором программа работает аналогично, но вместо синусоиды у нее парабола.
Нужно изменить. Я вас очень прошу, программисты, мне очень нужно решение, надеюсь на вашу доброту и милосердие.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# include <iostream>
# include " conio.h "
# include <math.h>
 
/ * Заголовок функции для нахождения заданного корня * /
double findIntersection ( int , int , double , int ) ;
 
using namespace std ;
int main ( )
{
const int N = 360 / * переменная N определяет размер массива , поэтому объявлена ​​с квалификатора const ; 360 означает , что будем рассматривать 360 различных значений угла α , перебегая значения от 0 до 359 с шагом 1 º . Вообще говоря , перебегать возможные значения α можно с большим шагом , тогда определенные диапазоны с изолированными корнями будут шире * /
const double PI = 3.14159265 ;
int cR , step = 1 / * cR - радиус окружности (начало его в центре координат) , step - шаг переменной цикла , установленный в 1 º * /
cout << " Circle's radius ? " << endl ;
cin >> cR ;
/ * В массивы cXs и cYs будем записывать абсциссы и ординаты точек окружности для значений угла α от 0 до 359 º с шагом 1 , а в массив fYs [ N] - ординаты параболы для соответствующих элементов массива cXs * /
double cXs [ N] , cYs [ N] , fYs [ N] ;
for ( int i = 0 ; i <N ; i + = step ) {
/ * Не забываем выражать градуса в радианах ! * /
cXs [ i ] = cR * cos ( i * PI/180 ) ;
cYs [ i ] = cR * sin ( i * PI/180 ) ;
fYs [ i ] = ( cXs [ i ] ) * ( cXs [ i ] ) ;
}
/ * Массив intersections создаем для того , чтобы хранить в нем значение тех углов в градусах , в окрестности которых пересекают круг и парабола , в этом массиве зарезервировано 8 элементов , хотя круг и парабола в действительности могут пересекаются менее , чем в 2 точках * /
int K = 0 int intersections [ 10];
for ( int i = 0 ; i <N -1 ; i + +) {
/ * Сравниваем пары соседних соответствующих элементов массивов cYs и fYs с целью выявления значений угла α , для которых разница сYs - fYs меняет знак , и запоминаем эти значения угла в массив intersections * /
if ( ( cYs [ i ] < = fYs [ i ] ) && ( cYs [ i +1 ] > = fYs [ i +1 ]))
{ Intersections [K ] = i ; K + + ;}
if ( ( cYs [ i ] > = fYs [ i ] ) && ( cYs [ i +1 ] < = fYs [ i +1 ]))
{ intersections [K ] = i ; K + + ;}
}
/ * В переменные startI и endI будем записывать углы в градусах , что является началом и концом соответственно каждого диапазона с изолированными корнями , для избежания возможности непопадания корня в диапазон его пределы устанавливаем " с запасом " : если угол в градусах есть больше 0 , то нижнего предела принимаем предварительное рассмотрен значение угла ; верхний предел устанавливаем аналогично * /
int startI , endI ;
for ( int i = 0 ; i < K ; i + +) {
( intersections [ i ] > 0) ? ( startI = intersections [ i ] -1 ) : ( startI = intersections [ i ] ) ;
( intersections [ i ] < ( N - 1 )) ? ( endI = intersections [ i ] + 1): ( endI = intersections [ i ] ) ;
/ * Для нахождения корня вызываем функцию findIntersection , которой передаем пределы диапазона , значение константы PI и радыус круга * /
cout << " bestAngle : " << " \ t " ;
double bestAngle = findIntersection ( startI , endI , PI , cR ) ;
/ * Выводим на экран значение угла α , при котором есть пересечение окружности с параболой , и координаты х , y соответствующей точки * /
cout << bestAngle << " rad = " << bestAngle * ( 180/PI ) << " grad " << endl ;
cout << " best value of X : " << cR * cos ( bestAngle ) << endl ;
cout << " sin : " << cR * sin ( bestAngle ) << " \ t " << " x ^ 2: " << ( cR * cos ( bestAngle ) ) * ( cR * cos ( bestAngle )) ;
cout << endl ;
}
_getch ();
}
double findIntersection ( int startI , int endI , double PI , int cR ) {
int points = 1000 ; / / количество узлов
/ * В переменную bestResidual будем записывать так называемую " невязку " - модуль разности между значением y = Rsinα и y = x2 ; очевидно , что наименьшему значению bestResidual соответствует значение угла , при котором значение х наиболее приближено к истинному корня уравнения y = Rsinα и y = x2 * /
double cX , cY , fY , bestResidual = 100 , bestAngle = -1 , step = ( PI/180 ) * ( endI - startI ) / points ;
for ( double angle = startI * PI/180 ; angle < endI * PI/180 ; angle + = step ) {
cX = cR * cos ( angle ) ;
cY = cR * sin ( angle ) ;
fY = cX * cX ;
if ( fabs ( cY - fY ) < bestResidual )
{
bestResidual = fabs ( cY - fY ) ;
bestAngle = angle ;
}
}
return bestAngle ;
}
Спасибо всем кто не прошел мимо. Буду очень благодарен всем кто отозвался.

Добавлено через 9 часов 53 минуты
Пожалуйста!

Добавлено через 24 минуты
Разве никто не знает как это сделать!? отзовитесь пожалуйста форумчани и программисты(
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.01.2014, 16:44
Ответы с готовыми решениями:

Математическая задача
Добрый вечер! Снова прошу у вас помощи с программой. Выдает ошибку при запуске. И ещё её нужно переделать, для работы через функции, у меня...

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

Математическая задача
Сумма 1+\sum_{n=1}^{\propto}\frac{{3}^{n}\prod_{i=1}^{n}(2i-1)}{\prod_{j=1}^{n}2j} Промежуток (-0.5;0.5) Шаг - 0.02 Функция...

8
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
26.01.2014, 17:39
Поставь там где fY= и ещё где fYs[i]= вместо синуса формулу параболы!
1
0 / 0 / 0
Регистрация: 26.10.2013
Сообщений: 24
26.01.2014, 17:50  [ТС]
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Поставь там где fY= и ещё где fYs[i]= вместо синуса формулу параболы!
А можно подробнее, и как сформулировать формулу синусоиды?
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
26.01.2014, 18:19
А ты в каком классе учишься?
0
0 / 0 / 0
Регистрация: 26.10.2013
Сообщений: 24
26.01.2014, 19:50  [ТС]
Универ 1 курс. Но как и куда вставить формулу не понимаю.
0
26.01.2014, 20:03

Не по теме:

На однокурсников посмотри! Им стыдно, что к ним, к будущим программистам, поступил человек, не освоивший полностью школьную алгебру!

0
320 / 225 / 74
Регистрация: 22.11.2013
Сообщений: 867
Записей в блоге: 1
26.01.2014, 20:14
Лучший ответ Сообщение было отмечено Vladuslav_11 как решение

Решение

Цитата Сообщение от Vladuslav_11 Посмотреть сообщение
А можно подробнее, и как сформулировать формулу синусоиды?
парабола y={x}^{2} или по другому y = x*x:
строчки 22: fYs [ i ] = ( cXs [ i ] ) * ( cXs [ i ] ) ;
строчка 56: fY = cX * cX ;
синусоида y=a*cos(x), где a - амплитуда (по-умолчанию 1). - тригонометрия 8 класс
1
0 / 0 / 0
Регистрация: 26.10.2013
Сообщений: 24
26.01.2014, 22:21  [ТС]
Цитата Сообщение от mustimur Посмотреть сообщение
парабола y={x}^{2} или по другому y = x*x:
строчки 22: fYs [ i ] = ( cXs [ i ] ) * ( cXs [ i ] ) ;
строчка 56: fY = cX * cX ;
синусоида y=a*cos(x), где a - амплитуда (по-умолчанию 1). - тригонометрия 8 класс
т.е

строчка 22: fYs[i] = (cos(cXs[i]));
строчка 56: fY = cos(cX);
0
320 / 225 / 74
Регистрация: 22.11.2013
Сообщений: 867
Записей в блоге: 1
26.01.2014, 22:25
Лучший ответ Сообщение было отмечено Vladuslav_11 как решение

Решение

ну или на sin(cX) и на sin(cXs[i]) это я тут что то задумался))
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.01.2014, 22:25
Помогаю со студенческими работами здесь

Математическая задача в С++
мат Задача помогите решить в С++ : s=cos(x) + (cos(x))/2 + ... + (cos(x)*n)/n^2 ; 0.2&lt;=X&lt;=0.8 ; n(max)= 20 ; х идет с шагом 0,1 ,а...

Математическая задача и паллиндром
Просьба помочь в решении этих задач (задачи, неверное решение и замечания к нему в файле ниже): (некоторые замечания видно только в...

необычная математическая задача
Добрый день, есть интересная задача. Прикрепил на скриншоте. Кроме этих данных к сожалению ничего нету(. уже начал писать на с++...

Математическая задача
Что не так с этим кодом? #include &lt;stdio.h&gt; #include &lt;math.h&gt; int main(void) { double x; double a; double t2; ...

Математическая задача
Помогите пожалуйста сделать программу для расчета задачи №2


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru