PDF-файл из архива «Задачник и решебник», который расположен в категории » «. Всё это находится в предмете «технология разработки программного обеспечения» из 9 семестр (1 семестр магистратуры), которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе «книги и методические указания», в предмете «технология разработки программного обеспечения» в общих файлах.
Просмотр PDF-файла онлайн
Текст 8 страницы из PDF
Количество очков вычисляетсяпо следующему правилу: за золотую медаль команда получаетсемь очков, за серебряную — шесть, за бронзовую — пять очков.Рекомендуемый вид экрана во время работы программы приведен ниже. Данные, введенные пользователем, выделены полужирным шрифтом.Итоги Олимпийских игрВведите в одной строке количество золотых,серебряных и бронзовых медалей.Австрия -> 3 5 9Германия -> 12 9 8Канада -> б 5 4Китай -> О б 2Корея -> 3 1 2Норвегия -> 10 10 5Россия -> 9 б 3США -> б 3 4Финляндия -> 2 4 бЯпония -> 5 1 4Итоги зимней Олимпиады в Нагано, 1998 г.СтранаЗолото Серебро Бронза Всего Очков1 Германия1292982 Норвегия25101053Россия918б3174Австрия35945Канадаб155бСШАб41337 Финляндия124б28Япония141059Китай028б10Кореяб32117815511496928068614637183.
Как построить правильный шестиугольник.
Написать программу, реализующую игру «угадай число».Правила игры следующие. Играют двое. Один задумывает число,второй — угадывает. На каждом шаге угадывающий делает предположение, а задумавший число — говорит, сколько цифр числаугаданы и сколько из угаданных цифр занимают правильныепозиции в числе.
Например, если задумано число 725 и выдвинуто предположение, что задумано число 523, то угаданы двецифры (5 и 2) и одна из них (2) занимает верную позицию.51Часть I. ЗадачиНиже приведен рекомендуемый вид экрана во время работыпрофаммы. Данные, введенные пользователем, выделены полужирным шрифтом.Компьютер задумал трехзначное число.
Вы должны его отгадать.После очередного числа вам будет сообщено, сколько цифругадано и сколько из них находятся на своих местах.После ввода числа нажР1майте .Для завершения игры нажмите .Ваш вариант -> 123 Угадано: О. На своих местах: ОВаш вариант -> 456 Угадано: 1. На своих местах: ОВаш вариант -> 654 Угадано: 2. На своих местах: 2Ваш вариант -> 657 Угадано: 2. На своих местах: 2Ваш вариант -> 658 Угадано: 3. На своих местах: 3*** ВЫ УГДЦАЛИ ! ***Нажмите для завершения.184. Напишите программу-телеграф, которая принимает отпользователя сообщение и выводит его на экран в виде последовательности точек и тире.
Вывод точек и тире можно сопроводить звуковым сигналом соответствующей длительности. АзбукаМорзе для букв русского алфавита приведена ниже.АдиМРФшь.-..—.-. -.-..-БЕИНСXЩэ-. —-.—. -.вжк0тцъю.—. «-.—-.-.-. —у—.—. -. —. -чыя-.-.-.-г3лпфункцииОбщие замечанияПриступая к решению задач этого раздела, следует вспомнить, что:П1 для передачи данных в функцию надо использовать толькопараметры.
Построение правильного шестиугольника при помощи циркуля и линейки
Глобальные переменные, т. е. переменные, объявленные вне функции, использовать не рекомендуется;52C/C++ в задачах и примерах• тип каждого фактического параметра (константы или переменной) в инструкции вызова функции должен совпадать стипом соответствующего формального параметра, указанногов объявлении функции;• если параметр функции используется для возврата результата,то в объявлении функции этот параметр должен быть ссылкой, а в инструкции вызова функции в качестве фактическогопараметра должен быть указан адрес переменной.Задачи185. Написать функцию, которая вычисляет объем цилиндра.Параметрами функции должны быть радиус и высота цилиндра.186.
Написать функцию, которая возвращает максимальное издвух целых чисел, полученных в качестве аргумента.187. Написать функцию, которая сравнивает два целых числа ивозвращает результат сравнения в виде одного из знаков: >, . При нажатии клавиши функция должназавершать работу и возвращать введенное число.202. Написать функцию, обеспечивающую ввод с клавиатурыдробного числа.
При нажатии клавиши соответствующий символ должен появляться на экране только в том случае, если этот54C/C-I-+ в задачах и примерахсимвол является допустимым в данной позиции. Например,функция не должна допускать ввод более чем одной точки и знака минус не в первой позиции.
Функция должна позволять редактировать введенное число при помощи клавиши .При нажатии клавиши функция должна завершать работу и возвращать введенное число.203. Написать программу, реализующую игру «21».
Действия повыдаче очередной карты игроку и компьютеру реализуйте в видефункции.ГрафикаОбщие замечанияПриступая к решению задач этого раздела, следует вспомнить, что:• в графическом режиме экран представляет собой совокупность точек, каждая из которых может быть окрашена в одиниз 16-ти цветов;• координаты точек возрастают слева направо и сверху вниз. Левая верхняя точка имеет координаты (0,0), правая нижняя •—(639,479);• для того чтобы программа могла выводить на экран графические примитивы (линии, окружности, прямоугольники), необходимо инициализировать графический режим.Шаблон графической программы выглядит следующим образом:// шаблон графической программы#include #include #define PATHTODRIVER «c: W b o r l a n d c W b g i W «void main (void)»)getch();return;// далее инструкции программыclosegraph(); // завершение графического режима>Задачи204.
Написать программу, которая вычерчивает на экране домик.205. Написать профамму, которая выводит на экран флагОлимпийских игр. Изображение флага приведено ниже (однойклетке соответствует пять пикселов).зеленыйC/C++ в задачах и примерах56206. Написать профамму, которая вычерчивает на экране кораблик.207. Написать профамму, которая вычерчивает на экране ракету.С)С)ii/208.
Написать профамму, которая с использованием метода базовой точки выводит на экран изображение кораблика.Часть I. Задачи57209. Написать программу, которая вычерчивает на экране узориз 100 окружностей случайного диаметра и цвета.210. Написать программу, которая вычерчивает на экране узориз 50 прямоугольников случайного размера и цвета.211.
Написать профамму, которая вычерчивает на экране узор -—ломаную линию из 100 звеньев со случайными координатами,случайного цвета.212. Написать профамму, которая выводит на экран контур пятиконечной звезды.213. Написать профамму, которая выводит на экран пятиконечную звезду красного цвета с белой окантовкой.214. Написать профамму, которая вычерчивает на экране шестиугольник.215.
Источник: studizba.com
Иллюстрированный самоучитель по Turbo Pascal для начинающих
197. Написать программу, которая вычерчивает на экране ракету.
198. Написать программу, которая, используя метод базовой точки, выводит на экран изображение кораблика.
199. Написать программу, которая вычерчивает на экране узор из 100 окружностей случайного диаметра и цвета.
200. Написать программу, которая вычерчивает на экране ломанную линию, состоящую из 200 звеньев, окрашенных в разные цвета, выбираемые случайным образом, причем координаты звеньев тоже выбираются случайно.
201. Написать программу, которая выводит на экран контур пятиконечной звезды.
202. Написать программу, которая выводит на экран пятиконечную звезду.
203. Написать программу, которая вычерчивает на экране шестиугольник.
204. Написать программу, которая рисует на экране Государственный флаг России.
205. Написать программу, которая рисует на экране веселую рожицу желтого цвета.
206. Написать программу, которая рисует на экране грустную рожицу.
Источник: samoychiteli.ru
Написать программу которая вычерчивает на экране шестиугольник
Помогите написать программу на (С++, С#) вывода графического изображения в виде сот с заданными параметрами N, X и Y,
Где N = количество сот, произвольно, задается при запуске программы
X = сторона соты в пикселях, произвольно, задается при запуске программы
Y = color стороны соты
Вывод изображения: циклично до на нажатия клавиши «Esc»
Важно: Запрос параметров Х, Y для каждой выводимой стороны шестигранника. (по умолчанию X, Y = заданным в начале цикла)
Картинка должна выглядеть так:
Подскажите с чего начать? С графикой не умею работать вообще.
Последний раз редактировалось Longplay; 31.03.2016 в 10:47 .
Регистрация: 02.01.2011
Сообщений: 3,322
Помогите написать программу на (С++, С#) |
Подскажите с чего начать? С графикой не умею работать вообще. |
Начать нужно с того, что нужно посмотреть, как рисуется одна линия. Один из самых простых вариантов — это рисовать линии на C# WPF:
using System.Windows; using System.Windows.Shapes; namespace Hexagons < /// /// Interaction logic for MainWindow.xaml /// public partial class MainWindow : Window < public MainWindow() < InitializeComponent(); // First Line Line line1 = new Line(); line1.Stroke = System.Windows.Media.Brushes.Black; line1.Fill = System.Windows.Media.Brushes.Black; line1.X1 = 10.0; line1.Y1 = 10.0; line1.X2 = 50.0; line1.Y2 = 50.0; MainGrid.Children.Add(line1); >> >
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
Вот здесь: http://www.redblobgames.com/grids/hexagons/
есть всё что нужно и даже больше.
Даже реализация всего этого на нескольких языках.
Регистрация: 02.01.2011
Сообщений: 3,322
В приведённой выше статье в самом начале есть функция, которая возвращает координаты вершины шестиугольника:
function hex_corner(center, size, i): var angle_deg = 60 * i + 30 var angle_rad = PI / 180 * angle_deg return Point(center.x + size * cos(angle_rad), center.y + size * sin(angle_rad))
Я её перевёл в C#:
Point HexCorner(Point center, int size, int i) < var angleDeg = 60 * i + 30; var angleRad = Math.PI / 180 * angleDeg; return new Point(center.X + size * Math.Cos(angleRad), center.Y + size * Math.Sin(angleRad)); >
Написал программу, которая рисует один шестиугольник:
using System; using System.Windows; using System.Windows.Shapes; namespace Hexagons < /// /// Interaction logic for MainWindow.xaml /// public partial class MainWindow : Window < public MainWindow() < InitializeComponent(); Point center = new Point(250, 150); int size = 100; DrawHexagon(center, size); >void DrawHexagon(Point center, int size) < Point startPoint = HexCorner(center, size, 0); Point p1 = startPoint; for (int i = 1; i DrawLine(p1, startPoint); > Point HexCorner(Point center, int size, int i) < var angleDeg = 60 * i + 30; var angleRad = Math.PI / 180 * angleDeg; return new Point(center.X + size * Math.Cos(angleRad), center.Y + size * Math.Sin(angleRad)); >void DrawLine(Point p1, Point p2) < Line line = new Line(); line.Stroke = System.Windows.Media.Brushes.Black; line.Fill = System.Windows.Media.Brushes.Black; line.X1 = p1.X; line.Y1 = p1.Y; line.X2 = p2.X; line.Y2 = p2.Y; MainGrid.Children.Add(line); >> >
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
В приведённой выше статье в самом начале есть функция, которая возвращает координаты вершины шестиугольника |
А я сделал таблицу косинусов и синусов с шагом в 30 градусов, чтобы не считать каждый раз.
Получается
return Point ( center.X + size * cos_30_table[index], center.Y + size * sin_30_table[index] );
Если size будет параметром шаблона, то вообще можно на этапе компиляции вычислить все координаты сразу и брать их из таблицы.
Но это я так, рассуждения вслух.
Как раз потихоньку занимаюсь проектом где нужны гексагоны.
Последний раз редактировалось Croessmah; 02.04.2016 в 14:18 . Причина: чутка напутал
Регистрация: 02.01.2011
Сообщений: 3,322
Да, действительно лучше таблицу делать
Такие значения будут:
Cos(90) = 0, Sin(90) = 1
Cos(150) = -0.866025403784439, Sin(150) = 0.5
Cos(210) = -0.866025403784439, Sin(210) = -0.5
Cos(270) = 0, Sin(270) = -1
В C# задал таблицы через коллекции Dictionary:
public partial class MainWindow : Window < DictionarycosTable = new Dictionary < < 30, 0.866025403784439 >, < 90, 0.0 >, , , , >; Dictionary sinTable = new Dictionary < < 30, 0.5 >, < 90, 1.0 >, , , , >; // . >
Метод, который расчитывает координату вершины, выглядит теперь так:
Point HexCorner(Point center, int size, int i)
Последний раз редактировалось 8Observer8; 03.04.2016 в 00:01 .
Регистрация: 31.03.2016
Сообщений: 2
Регистрация: 02.01.2011
Сообщений: 3,322
Я добавил метод, который рисует заданное количество гексагонов в ширину и высоту, вызывая метод, который рисует один гексагон
Вывод программы:
using System; using System.Windows; using System.Windows.Shapes; using System.Collections; using System.Collections.Generic; // http://www.programmersforum.ru/showthread.php?t=291279 namespace Hexagons < /// /// Interaction logic for MainWindow.xaml /// public partial class MainWindow : Window < DictionarycosTable = new Dictionary < < 30, 0.866025403784439 >, < 90, 0.0 >, , , , >; Dictionary sinTable = new Dictionary < < 30, 0.5 >, < 90, 1.0 >, , , , >; public MainWindow() < InitializeComponent(); Point center = new Point(50, 50); int size = 30; DrawHexagonPlane(center, size, 5, 7); >void DrawHexagonPlane(Point center, int size, int amountInWidth, int amountInHeight) < Point c = center; double distToRight = size * cosTable[30]; double distToBottom = size * sinTable[30] + size; for (int row = 0; row < amountInHeight; row++) < for (int col = 0; col < amountInWidth; col++) < if (row % 2 == 0) < DrawHexagon(new Point(c.X + col * 2 * distToRight, c.Y + row * distToBottom), size); >else < DrawHexagon(new Point(c.X + col * 2 * distToRight + distToRight, c.Y + row * distToBottom), size); >> > > void DrawHexagon(Point center, int size) < Point startPoint = HexCorner(center, size, 0); Point p1 = startPoint; for (int i = 1; i DrawLine(p1, startPoint); > Point HexCorner(Point center, int size, int i) < var angleDeg = 60 * i + 30; //var angleRad = Math.PI / 180 * angleDeg; return new Point(center.X + size * cosTable[angleDeg], center.Y + size * sinTable[angleDeg]); >void DrawLine(Point p1, Point p2) < Line line = new Line(); line.Stroke = System.Windows.Media.Brushes.Black; line.Fill = System.Windows.Media.Brushes.Black; line.X1 = p1.X; line.Y1 = p1.Y; line.X2 = p2.X; line.Y2 = p2.Y; MainGrid.Children.Add(line); >> >
Источник: www.programmersforum.ru