Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
KKKRRR
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 19
#1

Задача про синусоиду - C++

25.09.2012, 00:16. Просмотров 910. Ответов 13
Метки нет (Все метки)

Велосипедист Павлуша выехал на широкую дорогу. Но ехать иначе, чем по закону синусоиды, ему никак не удавалось. Юный спортсмен стартовал в точке Х0 на оси ОХ, а центры оснований столбов находятся в точках х1, х2, ..., хn на этой же оси, которую пересекает синусоида движения велосипедиста. Сколько столбов попадутся на пути Павлуши, если шириной столба можно пренебречь?

Спасибо большое!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.09.2012, 00:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Задача про синусоиду (C++):

Задача про монахов - C++
Условие такое: Имеется n монахов и m пирогов. Ведущий монах съедает за один раз 10 пирогов, обычный - 5, ученик монаха - 0.5. Вывести все...

Задача про буквы - C++
Условие задачи таково: изменить в строке все маленькие буквы на большие, всё это делается в файле!Мой вопрос:существуют ли какие лиюо...

Задача про рюкзак - C++
Из заданных N предметов выбрать такие, чтобы суммарный вес был менее 30 кг, а стоимость - наибольшей. Напечатать суммарную стоимость. ...

Задача про Домино-2 - C++
Пожалуйста, помогите срочно!! Желательно код, или помогите переделать задачу про домино ранее на этом сайте:...

Задача про ракету - C++
Нужно решить задачу,написав код на с++. Ракета массой 300 т стартует с Земли. Через какое время она достигнет высоты 40 км, если за...

Задача про шахматы - C++
Все доброго времени. Помогите пожалуйста с заданием. Нужно с помощью двумерного массива вывести на экран шахматную доску с...

13
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6503 / 3142 / 307
Регистрация: 04.12.2011
Сообщений: 8,673
Записей в блоге: 5
25.09.2012, 00:33 #2
Думаю нужно задаться амплитудой A, циклической частотой W и временем движения, а потом проверять:
x1+x2+...+xi+...xk<=AWt
То есть сумма расстояний столбов для каждого t, при заданных A, W, x1, x2, x3 ... должна быть максимальным не превышающим AWt числом. Количество слагаемых - количество столбов.
Можно положить x1, x2, x3 ... в массив и в цикле накапливая сумму, на каждом шаге сравнивать:
x1+x2+...+xi+...xk>AWt ?
Как только выполнилось, - индекс это количество столбов. Главное чтобы не врезался.
1
KKKRRR
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 19
25.09.2012, 00:34  [ТС] #3
а можно, если Вам несложно, записать это все в виде кода?
0
I.M.
565 / 548 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
25.09.2012, 00:39 #4
может все проще? и павлуша столкнется со всеми столбами, координаты которых равны x0+2k. это при условии, что из х0 синусоида только начинается.2k - это расстояния между соседними нулями синусоиды
2
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6503 / 3142 / 307
Регистрация: 04.12.2011
Сообщений: 8,673
Записей в блоге: 5
25.09.2012, 01:20 #5
А может и повезет Павлуше на этот раз.
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
#include <iostream>
using namespace std;
int main(){
int n, maxStolbov, countStolbov;
double W,A,t, sumRast, putVdolStolbov;
maxStolbov=20;//тут сколько хотите, хоть стами иожете ограничить
cout<<"Vvedite kolichestvo stolbov\n";
cin>>n;
if(n>maxStolbov||n<=0) n=maxStolbov;
double *RastArr=new double[n];
for(int i=0; i<n; i++){
cout<<"Vvedite rasstoyanie do\t"<<i<<"-go stolba\n";
cin>>RastArr[i];
}
cout<<"Vvedite W\n";
cin>>W;
cout<<"Vvedite A\n";
cin>>A;
cout<<"Vvedite t\n";
cin>>t;
putVdolStolbov=A*W*t;
countStolbov=0;
sumRast=0;
while(sumRast<=putVdolStolbov){
sumRast+=RastArr[countStolbov];
countStolbov++;
if(countStolbov==n)break;
}
cout<<"\nVot skolko stolbov=\t"<<countStolbov<<"\n";
system("pause");
return 0;
}
Путь начинается от первого столба.
1
KKKRRR
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 19
25.09.2012, 22:08  [ТС] #6
Спасибо огромное, а можно эту задачку сделать при помощи библиотеки Stdio.h?

Добавлено через 12 часов 32 минуты
Ребята напишите плиз с использованием библиотеки Stdio.Пожалуй
0
OhMyGodSoLong
25.09.2012, 22:26
  #7

Не по теме:

Кто возьмётся построить картину интерференции Павлуши со столбиками?

1
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6503 / 3142 / 307
Регистрация: 04.12.2011
Сообщений: 8,673
Записей в блоге: 5
26.09.2012, 02:35 #8
Павлуше лучше бы ровнее ездить(имхо)):
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
#include <stdlib.h>
#include <Stdio.h>
#include <string.h>
int main(){
int n, maxStolbov, countStolbov;
float W,A,t, sumRast, putVdolStolbov;
maxStolbov=20;//тут сколько хотите, хоть стами можете ограничить
 printf_s("Vvedite kolichestvo stolbov\n");
 scanf_s("%d",&n);
if(n>maxStolbov||n<=0) n=maxStolbov;
float *RastArr=(float*) malloc(maxStolbov* sizeof(float));
for(int i=0; i<n; i++){
printf_s("Vvedite rasstoyanie do\t");
printf_s("%d",i);
printf_s("-go stolba\n");
scanf_s("%f",&RastArr[i]);
printf_s("\nVvedeno\t");
printf_s("%f",RastArr[i]);
printf_s("\n");
}
printf_s("Vvedite W\n");
scanf_s("%f",&W);
 
printf_s("Vvedite A\n");
scanf_s("%f",&A);
 
printf_s("Vvedite t\n");
scanf_s("%f",&t);
putVdolStolbov=A*W*t;
countStolbov=0;
sumRast=0;
while(sumRast<=putVdolStolbov){
sumRast+=RastArr[countStolbov];
countStolbov++;
if(countStolbov==n)break;
}
printf_s("\nVot skolko stolbov=\t");
printf_s("%d",countStolbov);
printf_s("\nNagmite cifru");
scanf_s("%f",&t);
return 0;
}


Добавлено через 2 часа 58 минут
Амплитуда не нужна(A):
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
#include <stdlib.h>
#include <Stdio.h>
int main(){
int n, maxStolbov, countStolbov;
float W,t, sumRast, putVdolStolbov;
maxStolbov=20;//тут сколько хотите, хоть стами можете ограничить
 printf_s("Vvedite kolichestvo stolbov\n");
 scanf_s("%d",&n);
if(n>maxStolbov||n<=0) n=maxStolbov;
float *RastArr=(float*) malloc(maxStolbov* sizeof(float));
for(int i=0; i<n; i++){
printf_s("Vvedite rasstoyanie do\t");
printf_s("%d",i);
printf_s("-go stolba\n");
scanf_s("%f",&RastArr[i]);
printf_s("\nVvedeno\t");
printf_s("%f",RastArr[i]);
printf_s("\n");
}
printf_s("Vvedite W\n");
scanf_s("%f",&W);
//*********
printf_s("Vvedite t\n");
scanf_s("%f",&t);
putVdolStolbov=W*t;
countStolbov=0;
sumRast=0;
while(sumRast<=putVdolStolbov){
sumRast+=RastArr[countStolbov];
countStolbov++;
if(countStolbov==n)break;
}
printf_s("\nVot skolko stolbov=\t");
printf_s("%d",countStolbov);
printf_s("\nNagmite cifru");
scanf_s("%f",&t);
return 0;
}

Не по теме:

Ни-за-что, I.M. мне тоже. Не пропадать же добру!

0
I.M.
26.09.2012, 02:38
  #9

Не по теме:

IGPIGP, остановитесь, мне уже жалко павлушу)

0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6503 / 3142 / 307
Регистрация: 04.12.2011
Сообщений: 8,673
Записей в блоге: 5
26.09.2012, 04:18 #10
Цитата Сообщение от I.M. Посмотреть сообщение

Не по теме:

IGPIGP, остановитесь, мне уже жалко павлушу)

Злобненькая задачка оказалась, I.М.
То, что W=V/A понятно. Но что-то среди ночи на ум не приходит как в общем виде получить:
http://www.cyberforum.ru/cgi-bin/latex.cgi?X(t)=V\int_0^t |Sin(\frac{V}{a}t)|dt
не кусками же его вычислять, хотя можно...
Ладно, будем надеяться, что терпит до завтра.
2
KKKRRR
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 19
26.09.2012, 10:09  [ТС] #11
Спасибо всем большое ребята
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6503 / 3142 / 307
Регистрация: 04.12.2011
Сообщений: 8,673
Записей в блоге: 5
26.09.2012, 12:56 #12
Цитата Сообщение от KKKRRR Посмотреть сообщение
Спасибо всем большое ребята
KKKRRR, задачка только кажется сложноватой (если точно решать). Или мне опять кажется или для велосипедиста движущегося с путевой скоростью V(t)=Const(t)=V, вдоль Y(X)=ASinx :
http://www.cyberforum.ru/cgi-bin/latex.cgi?X(t)=V \int_0^t Cos(arctg(A\cdot CosX(t)))dt

Не по теме:

Посмотришь и скажешь: - "Приснится же такое...". Ладно. Нужно подумать. Может кто ещё скажет... Вообще, - для lisp задача. Судя по количеству скобок.
Привет Павлуше.

1
KKKRRR
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 19
26.09.2012, 21:37  [ТС] #13
IGPIGP, вот код программы, который вы позже прислали, это окончательное решение??
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6503 / 3142 / 307
Регистрация: 04.12.2011
Сообщений: 8,673
Записей в блоге: 5
26.09.2012, 23:13 #14
Цитата Сообщение от KKKRRR Посмотреть сообщение
IGPIGP, вот код программы, который вы позже прислали, это окончательное решение??
KKKRRR, этот код работает, но не годится (имхо). В нём предполагается что известна циклическая частота синусоиды, и ещё хуже, что она постоянна во времени. Это накладывает на скорость велосипедиста неприятное ограничение в виде очень специальной зависимости от времени. Вряд-ли Павлуша, не умеющий ездить это потянет. Так что поспешил я.
Последняя приведенная формула, по моему мнению, ближе всего к истине. Она предполагает, что велосипедист движется равномерно по синусоиде. То есть с постоянной путевой скоростью V. Решение полученного интегрального уравнения, если никто не предложит аналитического решения, предстоит провести численно. А это задачка не так себе.
0
26.09.2012, 23:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.09.2012, 23:13
Привет! Вот еще темы с ответами:

задача про массивы - C++
упорядочить по убыванию положительные эл-ты массмва, сохраняя остальные эл-ты на прежних местах

Задача про кубики - C++
Есть столбики указанных размеров. Задание такое: Какое наименьшое количество перекладываний необходимо сделать, что бы высота 2х любых...

Задача про числа - C++
Думаю, думаю, но всё равно не могу понять как решить. Задача: Дан массив из положительных чисел и два числа a и b. Мы можем отнять...

задача про графы - C++
Написать программу отыскания кратчайших путей между всеми парами вершин ориентированного графа по его списковому представлению


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru