Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
2 / 2 / 0
Регистрация: 31.03.2016
Сообщений: 44

Определить победителей в соревновании по стрельбе

05.10.2016, 07:43. Показов 1811. Ответов 6

Студворк — интернет-сервис помощи студентам
В системе координат X, Y «нарисована» мишень на 10 кругов с центром в начале координат и шагом радиуса 10 единиц. Кругу с радиусом 10 единиц соответствует весовое значение в 10 баллов. Для каждого следую-щего «кольца» мишени баллы уменьшаются от 9 до 1. Случайным образом формируются координаты X и Y 10 точек (десять выстрелов). Диапазон значений координат каждой точки от минус 150 до 150. В соревновании по стрельбе участвуют 5 спортсменов. Результаты соревнований представить в табличной и графической форме. Определить победителей.

p/s спасибо заранее!!!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.10.2016, 07:43
Ответы с готовыми решениями:

Определить результаты спортсменов по стрельбе
Надо написать программу на Си,но я что-то вообще не знаю даже с чего начать в этом задании(( Вот мое решение Я насчитала 188 очков на...

Определить участников, занявших первые три призовых места в соревновании
В соревнованиях по прыжкам в длину каждый спортсмен имеет право на 5 попыток . К итоговому результату засчитывается лучшая . Составить...

Задача. Определить сколько баллов набрал победитель и количество победителей
Дан массив A -результаты участников олимпиады.Определить сколько баллов набрал победитель и количество победителей. Нашел только первого...

6
 Аватар для Sanya_sa
912 / 816 / 333
Регистрация: 03.02.2015
Сообщений: 5,276
Записей в блоге: 9
05.10.2016, 09:01
Графически отобразить каждый выстрел
0
1498 / 1213 / 821
Регистрация: 29.02.2016
Сообщений: 3,630
05.10.2016, 09:53
Лучший ответ Сообщение было отмечено Aksel97 как решение

Решение

стрельба команды
Вложения
Тип файла: rar shootS.rar (17.9 Кб, 21 просмотров)
0
 Аватар для Sanya_sa
912 / 816 / 333
Регистрация: 03.02.2015
Сообщений: 5,276
Записей в блоге: 9
05.10.2016, 11:14
Лучший ответ Сообщение было отмечено Даценд как решение

Решение

afront, Чуть переделал.
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;
 
namespace Shooter
{
    public class Shot
    {
        // Координаты выcтрела
        public Point PosInTarget { private set; get; }
 
        // Размер
        public Size SizeShot { private set; get; }
 
        //
        public Shot(Point posInTarget)
        {
            var x = 4;
            PosInTarget = new Point(posInTarget.X - x / 2, posInTarget.Y - x / 2) ;
            SizeShot = new Size(x, x);
        }
    }
}
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;
 
namespace Shooter
{
    public class TargetFild
    {
        // Шаг мишени
        private const int _Step = 10;
 
        // Центр
        public Point CenterTarget { private set; get; }
 
        // Центр
        public int[] RadiusTargetCircls { private set; get; }
 
        // Выстрелы
        public List<Shot> Shots { private set; get; }
 
        // Счет
        public int Score { private set; get; }
 
        //
        public TargetFild(Point centerTarget)
        {
            Score = 0;
            CenterTarget = centerTarget;
            RadiusTargetCircls = new int[11];
            Shots = new List<Shot>();
 
            for (int i = 0; i < RadiusTargetCircls.Length; i++)
            {
                RadiusTargetCircls[i] = i * _Step;
            }
        }
 
        // Выстрел
        public void SetShot()
        {
            var rnd = new Random();
            var x =rnd.Next(0, 300);
            var y = rnd.Next(0, 300);
            var p = new Point(x, y);
 
            Shots.Add(new Shot(p));
 
            var a = Math.Abs(p.Y - CenterTarget.Y);
            var b = Math.Abs(p.X - CenterTarget.X);
            int  c = (int)Math.Sqrt(Math.Pow(a, 2) + Math.Pow(b, 2));
 
            Score += c > RadiusTargetCircls.Length * _Step ? 0 : 10 - c / _Step;
        }
 
        // Очистить выстрелы (новая мишень)
        public void ClearShots()
        {
            Score = 0;
            Shots.Clear();
        }
    }
}
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace Shooter
{
    //
    public partial class MainForm : Form
    {
        //
        Font ScoreFont = new Font("Arial", 10, FontStyle.Bold);
        Font NumFont = new Font("Arial", 7, FontStyle.Bold);
        TargetFild TargetFild;
 
        public MainForm()
        {
            InitializeComponent();
 
            TargetFild = new TargetFild(new Point(150, 150));
        }
 
        // 
        private void buttonShot_Click(object sender, EventArgs e)
        {
            TargetFild.SetShot();
            Invalidate();
        }
 
        //
        protected override void OnPaint(PaintEventArgs e)
        {
            e.Graphics.DrawRectangle(Pens.Black, new Rectangle(new Point(), new Size(TargetFild.CenterTarget.X * 2, TargetFild.CenterTarget.Y * 2)));
 
            for (int i = 0; i < TargetFild.RadiusTargetCircls.Length; i++)
            {
                var it = TargetFild.RadiusTargetCircls[i];
                Point p = new Point(TargetFild.CenterTarget.X - it, TargetFild.CenterTarget.Y - it);
                Size s = new Size(it * 2, it * 2);
                e.Graphics.DrawEllipse(Pens.Black, new Rectangle(p, s));
                e.Graphics.DrawString(string.Format("{0,2}", 10 - i), NumFont, Brushes.BlueViolet, new Point(TargetFild.CenterTarget.X - 6, TargetFild.CenterTarget.Y + TargetFild.RadiusTargetCircls[i]));
 
            }
 
            foreach (var it in TargetFild.Shots)
            {
                e.Graphics.FillEllipse(Brushes.Red, new Rectangle(it.PosInTarget, it.SizeShot));
            }
 
            e.Graphics.DrawString(string.Format("Кол- во выстрелов = {0}\nКол- во очков = {1}", TargetFild.Shots.Count, TargetFild.Score), ScoreFont, Brushes.Green, new Point());
        }
 
        // Новая мишень
        private void buttonNew_Click(object sender, EventArgs e)
        {
            TargetFild.ClearShots();
            Invalidate();
        }
    }
}
Миниатюры
Определить победителей в соревновании по стрельбе  
0
2 / 2 / 0
Регистрация: 31.03.2016
Сообщений: 44
05.10.2016, 22:14  [ТС]
спасибо)))
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
06.10.2016, 08:46
Sanya_sa, Вы бы сглаживание включили что-ли? На круги c лесенкой больно смотреть
0
 Аватар для Sanya_sa
912 / 816 / 333
Регистрация: 03.02.2015
Сообщений: 5,276
Записей в блоге: 9
06.10.2016, 09:08
C#
1
e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.10.2016, 09:08
Помогаю со студенческими работами здесь

Использую структуру определить победителей в каждом из конкурсов и победителя игры по сумме баллов
Составить С ++ - программу формирования таблицы: массива данных типа struct с полями: - Team (название команды КВН) - тип string ; -...

Чемпионат по стрельбе
На региональном этапе Всероссийской олимпиады школьников по информатике 23 января 2011 года предлагалась следующая задача. Победитель...

Структура с информацией о спортивном соревновании
Создать массив, в котором записать информацию о студенческом спортивном соревновании: фамилия, группа, пол, показанное время. Вывести...

На спортивном соревновании участники зарегистрировали номера
На спортивном соревновании участники зарегистрировали номера Соревнования 1, 2, ..., n. Для каждого спортсмена известна страна...

Почему я зависаю при стрельбе?
Короче решил попробовать стрельбу по методу тринли https://www.youtube.com/watch?v=T6o5OlgsCew, подскажите где ошибка вроде все как по...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 31.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 30.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru