Форум программистов, компьютерный форум CyberForum.ru

Черепашья графика - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ как организовать ? http://www.cyberforum.ru/cpp-beginners/thread93140.html
вот такой вопрос нужно написать программу которая определяет минимальное число во введенной с клавиатуры последовательности положительных чисел (ДЛИНА ПОСЛЕДОВАТЕЛЬНОСТИ НЕОГРАНИЧЕННА) если перебор организовать могу то вот как сделать неограниченной длину последовательности ?
C++ Некоректности в булевом выражении Я недавно начал изучать C++ и я немного преуспел (для начинающего), но тут меня кое-что конкретно тормознуло. Тормозом оказалась проблемка в этом коде: #include <iostream> #include <stdio.h> using namespace std; void HackAlert() { string answer; cout << "Are you a hacker? (Y or N)" << endl; cin >> answer; http://www.cyberforum.ru/cpp-beginners/thread93123.html
Дан целочисленный массив, нужно исключить из него все нули C++
Дан целочисленный массив, нужно исключить из него все нули. Если нулей нет-написать "сжатие невозможно". Составить динамический массив и ввод элементов я смогу. А как реализовать поиск 0 и их удаление?
Вычислить процент от общего количества C++
Помогите пожалуйста разобратся с этой прогой: Написать прогамму, которая обрабатывает результаты экзамена. Для каждой оценки программа должна вычислить процент от общего количества оценок. Оценки от 5 до 2. Среда разработки: С++
C++ Шахматная доска и строка http://www.cyberforum.ru/cpp-beginners/thread93094.html
Есть 3 задачки, немного не соображу как их решить. Помогите горе-программисту :) 1) Поле шахматной доски определяется парой натуральных чисел, первое из которых задаст номервертикали, а второе- номер горизонтали. Даны натуральные числа k, l, m, n. Требуется выяснить, являются ли поля (k, l) и (m, n) полямиодного цвета. 2)В последовательности введённых символов (последний '$') определить...
C++ Матрица и элементы Помогите решить задачу: Сформиромать матрицу С (N,M) элементами которой являются случайные числа, равномерно распределённые в интервале (-4.0, 8.2). Переставляя её строки и столбцы, добиться того, чтобы наименьшийэлемент этой матрицы оказался в левом верхнем углу. Матрицу сформировать динамическим массивом я могу, рандом тоже могу, а всё остальное не знаю как. Помогите пожалуйста! подробнее

Показать сообщение отдельно
spacistor
1 / 1 / 0
Регистрация: 18.02.2010
Сообщений: 4
19.02.2010, 10:56     Черепашья графика
G-Cat, нет никакой идеи или алгоритма. Задача решается в лоб. Класс Tortoise представляет требуемую черепаху. У неё хранится состояние: floor - поле 20 * 20, x,y - положение черепахи, pen - положение пера (0 - поднято, 1 опущено). direction - направление куда повёрнута голова черепахи (целое число от 0 до 3х). Приращения для перехода черепахи если будет дана команда "двигаться прямо" берутся из массивов dx, dy. То есть x += dx[direction], y+=dy[direction]. Это позволяет избежать громоздких конструкций со switch как при движении прямо, так и при поворотах. Когда приходит команда поворот налево, я просто уменьшаю direction на единицу, направо - увеличиваю (разумеется, надо учесть что если значение выходит за пределы 0..3, то оно должно "проворачиваться"). Вот собственно и всё.
По методам:
SafeInc: увеличивае т значение value (передаётся по указателю) на величину delta с проверкой, что значение не может выходить за пределы min..max. Если cycle истина, то при выходе за указанные пределы значение "проворачивается" и принимает максимальное значение если было меньше минимального и минимальное если было больше максимального. Если же cycle ложно, то value просто "упирается" в ограничитель (min или max) и не выходит за пределы. Этот метод используется для инкрементирования(delta >0)/декрементирования(delta < 0) direction (cycle = true) и x, y (cycle = false).
Command: выполняет команду, переданные в виде целого числа.
Если cmd < 3 - Это команда поднять/опустить перо. Причём если "опустить" то сразу ставится точка на поле.
Если 3 <= cmd < 5 - это команда на поворот. direction просто инкрементируется или дектрементируется на единицу. "2 * cmd - 7" принимает -1 если cmd = 3 и +1 если cmd = 4 работает быстрее, чем if, но в 99,9% случаев так лучше не писать, ибо запутывает код.
Если cmd = 5 - движение. Просто инкрементим x, y на величину dx[direction], dy[direction]. Кстати там у меня баг - надо floor[x, y] = pen делать только если перо опущено:
C#
1
2
if (pen == 1)
  floor[x,y] = 1;
Если cmd = 6, печать массива, тут без комментариев.

В основной программе посимвольно с консоли считываются команды и выполняются, пока не встретится 9 (конец ввода).
C#
1
cmd = Console.Read() - Convert.ToInt16('0')
это просто преобразование кода символа в цифру. (то есть '7' -> 7).
 
Текущее время: 15:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru