0 / 0 / 0
Регистрация: 11.12.2009
Сообщений: 9
|
|
1 | |
Пройденный роботом путь11.12.2009, 20:04. Показов 3268. Ответов 20
Метки нет (Все метки)
Всем привет. Совсем недавно начала изучать язык С++ и попалась такая задача, никак не могу понять, как к ней подойти вообще, возможно, кто-то сможет помочь?
Напишите программу, которая будет вычислять пройденный некоторым условным роботом путь и затраченное время на основании записанных в файл данных о количестве оборотов каждого из двух колес робота. Робот может поворачивать, полностью останавливая одно из своих колес или совершая обороты ими в противоположных направлениях. Диаметры колес и другие параметры робота известны (задаются пользователем).
0
|
11.12.2009, 20:04 | |
Ответы с готовыми решениями:
20
Вычислить пройденный по МКАД путь Определить пройденный телом путь Определить путь, пройденный телом, падающим с ускорением, после первой и второй секунд падения Вывести на экран путь, пройденный пешеходом, если известны его скорость и время движения |
эволюционирую потихоньку
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
|
|
11.12.2009, 21:03 | 2 |
пример файла пожалуйсто
0
|
0 / 0 / 0
Регистрация: 11.12.2009
Сообщений: 9
|
|
11.12.2009, 21:07 [ТС] | 3 |
В том-то и дело, что мне неизвестно ровным счетом ничего, я не могу разобраться в этой задаче начиная с ее начала и заканчивая, естественно, концом(((
Самому придумать видимо надо все параметры, неважно какие...
0
|
эволюционирую потихоньку
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
|
|
11.12.2009, 21:35 | 4 |
н-да, это ж кто такое задаёт?
первое и последнее что приходит на ум, это держать в файле два числа - количетсво оборотов первого и второго колеса. пусть 4 и 5. путь считаем так: 1. берём меньшее число и по формуле L1=2*pi*r*количетсво оборотов, вычисляем первую чатсь пути 2. считаем разность по модулю abs(5-4)=1 и тут думаем что одно колесо стоит, а второе сделало лишний оборот (собсвенно это условно) в этом случае центр робота сместиться на L2=2*pi*r*разность количетсво оборотов/2, r-радиус колеса робота 3. L=L1+L2 хотя чёт шибко просто получается, требуется уточнение, не понятно в какую сторону копать
0
|
159 / 156 / 47
Регистрация: 29.04.2009
Сообщений: 636
|
||||||
11.12.2009, 21:36 | 5 | |||||
0
|
0 / 0 / 0
Регистрация: 11.12.2009
Сообщений: 9
|
|
11.12.2009, 22:24 [ТС] | 6 |
TanT
преподаватель в институте задает...((((( Sekt спасибо, хмм, это Вы мне написали как задать параметры?
0
|
159 / 156 / 47
Регистрация: 29.04.2009
Сообщений: 636
|
|
11.12.2009, 23:09 | 7 |
Да,вам.
0
|
0 / 0 / 0
Регистрация: 11.12.2009
Сообщений: 9
|
|
11.12.2009, 23:37 [ТС] | 8 |
Sekt
хехе, вопрос был с ударением на слово "параметры", а то, что написано мне, я не сомневалась )
0
|
133 / 132 / 29
Регистрация: 04.01.2009
Сообщений: 415
|
|
11.12.2009, 23:49 | 9 |
Есть другая идея:
Пусть в файл записываються данные о количестве совершенных оборотов колес каждую секунду... Тогда считывая данные можно вычислить и время и пройденный путь*!!! *Пройденный путь предлагаю вычислить следующим образом: 1.Если оба значения оборотов колес за данную секунду больше или меньше нуля, тогда можно считать, что робот движеться вперед или назад (при этом количество оборотов может быть полным или частичным, то есть вещественное** число, в зависимости от скорости робота) и этот путь рассчитать как среднюю линию равнобедренной трапеции. 2. Если хоть одно из значений равнозначное от другого либо равно нулю, то можно считать, что робот совершает поворот. При этом пройденный путь будет равен 0, так как он крутиться на месте. **Если использовать только целые обороты колес, то вычисления будут более понятными Хотя значение пройденного пути можно считать по разному...
0
|
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
|
|
12.12.2009, 06:29 | 10 |
На основании только этих данных однозначного расчета не сделаешь. Например: диаметр каждого колеса 1 м. Допустим полный оборот одного колеса совершается за 1 сек. В файле допустим записано что каждое колесо совершило один оборот. Тогда ответ такой:
Путь пройденный роботом: от 0 м до 1 м включительно. Затраченное время: от 1 сек до 2 сек включительно.
0
|
133 / 132 / 29
Регистрация: 04.01.2009
Сообщений: 415
|
|
12.12.2009, 12:10 | 11 |
Я так понимаю, что в файле записано не только 2 числа, а целый набор данных об оборотах колес робота, за определенное пройденное время.
Допустим робот ходит 8 секунд, тогда в файле будут записи следующего вида (первое число - обороты левого колеса, второе - правого): Код
1 1 1 0 -1 -1 1 0 1 1 1 0 -1 1 1 1 Примечание: Стрелка указывает не направление движения, а лицевую часть робота Следовательно, пройденный реальный путь в таком случае составляет 4м (1,3,5 и 8 шаги)
0
|
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
|
|
12.12.2009, 12:30 | 12 |
manfeese, Что именно записано в файле, это можно гадать сколько угодно. Пока что автор вопроса написал:
Т.е. вычислять путь и время, а в файле даны количества оборотов колес. Этих данных мало, я об этом писал. Скорее всего автор сам не доконца понял условие задачи и что-то недописал. Вполне возможно, что условие выглядит именно так как Вы его и представляете, но может быть и нет.
0
|
0 / 0 / 0
Регистрация: 11.12.2009
Сообщений: 9
|
|
13.12.2009, 19:33 [ТС] | 13 |
valeriikozlov
да вот и я думаю, что как-то неоднозначно дано... хотя вторым заданием идет создание функции, случайным образом задающей параметры этого робота. manfeese хмм, интересно тоже.. хотя с трапецией уже как-то сложновато получается.. хотя фиг его знает(
0
|
133 / 132 / 29
Регистрация: 04.01.2009
Сообщений: 415
|
|
13.12.2009, 20:56 | 14 |
Это лишь теория, фактически получается, что надо найти среднее арифметическое пройденного пути левого и правого колеса, при положительных либо отрицательных значениях обеих...
Добавлено через 1 минуту Так же вычисляется и средняя линия трапеции...
0
|
0 / 0 / 0
Регистрация: 11.12.2009
Сообщений: 9
|
|
21.12.2009, 14:46 [ТС] | 15 |
valeriikozlov
ну, я думаю пользователь в файле может задать все необходимое, что только требуется...
0
|
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
|
|
21.12.2009, 15:07 | 16 |
Тогда можно воспользоваться вариантом manfeese. И если действительно нужно только:
то решение данной задачи сводится к следующему: 1. затраченное время вычисляется так: считываем по парам числа из файла. если в паре хоть одно число не равно 0, то к счетчику прибавляем 1. В итоге счетчик покажет общее время когда хоть одно колесо крутилось. Если нужно время которое было затрачено именно на прохождение пути (т.е. повороты на месте не учитываем), то учитываем только пары,где оба числа равны или 1,или -1. 2. пройденный путь будем вычислять так: счетчиком подсчитываем кол-во пар чисел из файла, в которых оба числа равны или 1, или -1. Затем зная диаметр колеса, скорость его движения вычисляем пройденный путь.
0
|
0 / 0 / 0
Регистрация: 11.12.2009
Сообщений: 9
|
|
21.12.2009, 17:12 [ТС] | 17 |
ну, допустим, разберемся с временем и вычислением пути. А как с файлом работать, в котором вся информация хранится? Вот пишем в проге адрес файла и программа считывает с него данные. А все объявленные в файле переменные и константы и чего атм еще задается, не суть - в программе их объявлять как-нибудь надо вообще? Как она работает с ними?
0
|
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
|
||||||
21.12.2009, 18:45 | 18 | |||||
Судя по этой фразе диаметр колес и скорость вращения колеса задаются пользователем, во время выполнения программы. Тут стандартно:
0
|
0 / 0 / 0
Регистрация: 11.12.2009
Сообщений: 9
|
||||||
22.12.2009, 21:47 [ТС] | 19 | |||||
спасибо, буду разбираться
Добавлено через 22 часа 42 минуты Вобщем, пришла к выводу псиать программу так: в файле содержится 2 строки, одна - числа оборотов первого колеса (с минусами и плюсами в зависимости от направления движения колеса), а вторая строка для второго. Я считываю из файла эти числа, записываю в 2 массива и дальше проделываю с ними операции по нахождению пути. Программа написана, компилируется, но при запуске обнаруживает ошибку, а в чем дело неизвестно:
Предположительно что-то не так со считыванием и записью в массивы, но не пойму, что. а В файле с именем "in" содержатся две строки что-то вроде этого: -5 6 2 0 3 1 3 6 -2 3 7 -1
0
|
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
|
|||||||||||
23.12.2009, 06:16 | 20 | ||||||||||
Вот исправленный код:
Лучше тогда уж воспользоваться вариантом, который предлагал manfeese. Т.е. в файле храняться данные в виде пар чисел, каждое из которых 0, 1 или -1 и которые показывают, состояние колес за дискретный промежуток времени.
0
|
23.12.2009, 06:16 | |
23.12.2009, 06:16 | |
Помогаю со студенческими работами здесь
20
Разработать архитектуру программы управления роботом Рекурсивный обход роботом плоской фигуры Управление мобильным роботом, построенным на базе Pololu. Определить путь S, пройденный лодкой (путь=время*скорость) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |