Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Управление луноходом по карте. 
:(
    Опции темы
N0rd
Дата 15.12.2004, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 24.10.2004
Где: Карелия,Петрозаво дск

Репутация: нет
Всего: нет



Уже описывал эты проблемку в ветке общие вопросы,но так как пишем под линукс(в emacs'e),меня отправили сюда.

5. Управление луноходом по карте. Луноход передвигается по дорогам, отмеченным
на карте размером 20х20. 1 символ - 1 координатная единица. Ширина дороги - 1.
На карте должны быть развилки (не менее трех) и перекрестки. На перекрестках
находятся шахты, добывающие металл (не менее трех) и лунные поселки (не менее
двух). В поселках можно взять топливо, оплатив его металлом, а на шахтах
получить металл. Вес топлива и металла не должен превышать грузоподъемность
лунохода. Луноход передвигается по команде пользователя вида (направление,
число шагов). Например (вправо, 5). Если встретились шахта или поселок,
луноход сообщает о встреченном им объекте. По запросу пользователя луноход
должен сообщать расстояние до ближайшего перекрестка и вид объекта
(размещенного на нем), а также расстояния до ближайших шахты или поселка. По
другому запросу луноход должен сообщать общий вес груза, который еще можно
взять на борт и оставшийся запас топлива. Каждая единица пройденного пути
вызывает расход топлива. Если топливо кончилось, луноход может просить
ближайший поселок привезти ему топливо, получая долг по металлу. По требованию
пользователя программа должна выводить карту, на которой обозначены все шахты и
поселки, дороги и текущее положение лунохода. В начале работы программы луноход
имеет запас топлива, достаточный для посещения четырех объектов.

Примечание:
на перекрестках обязательно расположены шахты или лунные поселки, пустых
перекрестков быть не может.

Язык реализации C.

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

З.Ы. Обычный Си без плюсов.

PM MAIL   Вверх
dargaard
Дата 17.12.2004, 07:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Экс. модератор
Сообщений: 450
Регистрация: 7.5.2004

Репутация: 4
Всего: 25



Модератор: Тема не имеет никакого отношения к линуксу/юниксу.




--------------------
Ты должна сделать добро из зла 
потому что его больше не из чего
сделать. Р.П.Уоррен
PM MAIL WWW ICQ   Вверх
LuckLess
Дата 18.12.2004, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 15.9.2004

Репутация: 1
Всего: 1



ты что , хочешь чтобы тебе эту прогу целиком написали ??
Или тебе алгоритм нужен ? Или в каком нибудь конкретном месте чтото не выходит..?
PM MAIL   Вверх
cardinal
Дата 18.12.2004, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 2
Всего: 99





--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
N0rd
Дата 19.12.2004, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 24.10.2004
Где: Карелия,Петрозаво дск

Репутация: нет
Всего: нет



Писать я начал,вот что у меня пока что получилось
Код

/*==================================================================*/
/* Программа управления луноходом по карте                                                                         */
/* Формат вызова: ./prog5                                                                                                            */
/* Исходные данные: файл содержащий карту, команды вводимые пользователем            */
/* Результат: выполнение программой команд вводимых пользователем                             */
/* (передвижение лунохода, вывод на экран карты и т.д.)                                                       */
/* Используемые функции:                                                                                                          */
/*                                                                                                                                                     */
/* Автор: Белов О.                                                                                                                         */
/* Группа: 22103#2                                                                                                                        */
/* Дата написания: 14.12.04                                                                                                         */
/*==================================================================*/

#include <stdio.h>
#include <string.h>

#define MAP_SIZE 20         // Размер карты
#define MINE 2              // Количество шахт
#define MOON_VILAGE 3       // Количество лунных поселений
#define LENGTH_COMMAND 10   // Максимальная длина команды
#define FILE_NAME 50        // Максимальная длина имени исходного файла

int map[MAP_SIZE][MAP_SIZE]; // Матрица содержащая карту
int fuel_in_step;            // Расход топлива за один шаг
int fuel_cost;               // Цена топлива
int fuel_number;             // Запас топлива
int metal_number;            // Запас металла
int min_step;                // Кол-во шагов до ближайшего объекта на карте
int steps;                   // Кол-во шагов на которое необходимо
                            // переместить луноход

int main()
{
   FILE *file_input;          // файловая переменная для исходного файла
   char filename[FILE_NAME];  // имя исходного файла
   
    printf("Введите имя файла содержащего карту.");
    scanf("%s", &filename);   // Считываем имя файла  
    if(!(file_input=fopen(filename,"r")))  // Открываем файл, если произошла
                                           // ошибка при открытии
      printf("Ошибка при открытии файла %s\n", file_name);
                                           // то сообщаем о ошибке
    else
    {                            



Маловато конечно,но хоть кое что.Вообщем идея такова.В текстовом файле хранится карта,составленная так(например):
100000000001
110000000011
031111211310
010000000100
010000000100
0-это "пробел"
1-дорога
2-шахта
3-поселок
Я уже начал открывать файл.Далее будет такая конструкция:
if(input_data(file_input,map,MAP_SIZE)) // считываем данные из файла
// если произошла ошибка то выводим предупреждение
printf("Произошла ошибка при считывании данных\nПроверьте формат входных данных\n");

input_data-функция,которая будет посимвольно считывать данные из файла и в зависимости от цифры заносить в массив символы (д вместо 1,пробел вместо 0,ш вместо 2,п вместо 3).После этого я думаю файл становится ненужным и его можно закрыть?После всех этих приготовлений начинаем собственно сам процесс.Сначала я думаю надо вывести на экран справку содержащую все команды(вправо Х,влево У,карта...),справку реализовать функцией.Потом, пока команда не "выход":
введите команду
В зависимости от команды:вправо,влево,вниз,вверх,карта,торговля(в деревнях),справка,взять в долг топливо(если оно кончилось),расстояние до ближайшего...;Выполняем действия(их я думаю тоже реализовать функциями).
Дело в том что это можно сказать моя первая программа на Си.Вот что мне не очень понятно:как сделать функцию input_data,как вычислять расстояние до щахты,поселка,ближайшего объекта?
З.Ы. У меня есть готовая программа(у одногрупника взял),но я сам хочу написать свою.У вас на форуме можно файлы выкладывать,я бы положил эту прогу,может вам интересно посмотреть.
З.З.Ы.Ы. Даже не знаю что делать smile ,свою прогу писать или чужую переделывать,время поджимает,во вторник сдавать надо smile .

PM MAIL   Вверх
antonmasteR
Дата 19.12.2004, 19:39 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











N0rd
я когда-то такое писал вот лови

http://odinsoft.webcindario.com/worm.rar

там прога для ДОС но сам алгоритм думаю поймеш

  Вверх
N0rd
Дата 19.12.2004, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 24.10.2004
Где: Карелия,Петрозаво дск

Репутация: нет
Всего: нет



Спасибо за помощь, но без комментариев разобраться сложновато.
Цитата

Дело в том что это можно сказать моя первая программа на Си


PM MAIL   Вверх
cardinal
Дата 20.12.2004, 03:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 2
Всего: 99



Цитата(N0rd @ 19.12.2004, 17:02)
input_data-функция,которая будет посимвольно считывать данные из файла и в зависимости от цифры заносить в массив символы (д вместо 1,пробел вместо 0,ш вместо 2,п вместо 3).

Это лишнее. То есть посимвольно это делать не надо. Читаешь все содержание файла в массив и готово. Как это сделать я думаю сто раз на форуме описано...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
En_t_end
Дата 20.12.2004, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 1
Всего: 20



http://odinsoft.webcindario.com/worm.rar
Ага smile.... интересно а это правда прога нужная, или же это троянчик smile ?
или всё вместе smile ?, так называть опасно архивы, а то вдруг...
PM MAIL ICQ Skype GTalk Jabber   Вверх
antonmasteR
Дата 20.12.2004, 18:42 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











En_t_end
это игра worm типо червяк бегает по экрану жрет яблоки и растет smile
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0768 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.