1 / 1 / 0
Регистрация: 17.05.2015
Сообщений: 54

Задача на попадание в окружность

16.11.2015, 00:39. Показов 2950. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
13 номер.
10 раз стреляет, координаты рандомно, поподание 10 очков. Общее кол-во очков найти.
Подскажите пожалуйста с кодом.
Вот моё, но оно не доработано, вообще. Просто не особо понимаю как с окружностью делать. Очень нужна помощь,а времени нет (да и сил тоже)

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
#include <iostream>
 
using namespace std;
 
 
int main()
{
    int x,y;
    int shoot;
    int victory;
    shoot = 0;
    victory = 0;
    cout << "Vvod Radiusa" << endl;
    int r;
    cin >> r;
    
    
    cout << "random nubmer x =" << (x = rand() % 5 ) << endl;
 
    cout << "random number y =" <<(y = rand() % 5 )<< endl;
 
    cout << "--------NEXT-------" <<endl;
    
    while( shoot != 10 )
    {
    
    if (((x <= 0 && x>= -1) && ( y <= 1 && y >= -1)) || ((x<= 2 && x>=1) && (( y<= 2 && y>=1) && (y>= -2 && y<= -1))) &&((y*y) + (x*x) == (r*r)))
    { 
    victory = victory + 10;
    }
    shoot = shoot + 1;
    cout << "random nubmer x =" << (x = (rand() % 5 )) << endl;
 
    cout << "random number y =" <<(y = (rand() % 5  ))<< endl;
    cout << "victory = " << victory << endl;
 
    cout << "--------NEXT-------" <<endl;
    }
    cout << " Score " << victory << endl;
    system("pause");
    return 0;
}
Миниатюры
Задача на попадание в окружность  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.11.2015, 00:39
Ответы с готовыми решениями:

Задача на попадание точки в окружность
Нужно написать программу на с++ Ввод координат x и y с клавиатуры точка с координатами должна попадать в закрашенную серым часть...

Попадание точки в эллипс (окружность)
Интересует как возможно реализовать на языке Си попадание точки с произвольными координатами в эллипс с заданными расстояния от одного...

Проверить на попадание точек в окружность, на окружность, либо за её пределы
Ввести радиус окружности R с центром в начале координат. Ввести n точек, заданных координатами (x,y), которые проверить на попадание в...

3
 Аватар для Пытливый Ум
22 / 22 / 16
Регистрация: 04.06.2015
Сообщений: 126
16.11.2015, 02:24
Johny Deagle, вы радиус вообще не используете
Зато у вас везде координаты приводятся по модулю 5
Вам с окружностью и не надо работать
Сравниваете по координате x в какой половине лежит выстрел (в левой окр. или в правой)
А затем вычисляете расстояние от центра окружности до точки попадания и сравниваете с радиусом ссоответствующей окружности
1
16 / 16 / 7
Регистрация: 02.09.2015
Сообщений: 38
16.11.2015, 02:29
Подключить библиотеку math.h
C++
1
2
3
4
5
6
//r1 - радиус меньшего полукруга, r2 - большего
double d = squrt(x*x + y*y*1.);
if((d >= 0 && d <= r1 && x <= 0) || (d >= r1 && d <= r2 && x > 0))
{
  //попадание
}
1
4 / 4 / 1
Регистрация: 02.10.2015
Сообщений: 40
16.11.2015, 08:12
код...варианты 13ый и 14ый, попадание на границу считается
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
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
 
int got_it13(double x, double y) {
    double dst = sqrt(x*x + y*y);
 
    if (x <= 0.0 && dst <= 1.0)
        return 1;
    if (x >= 0.0 && dst >= 1.0 && dst <= 2.0)
        return 1;
    return 0;
}
 
int got_it14(double x, double y) {
    double dst = sqrt(x*x + y*y);
 
    if (x < 0.0) {
        if (y > 0.0 && dst >= 1.0 && dst <= 2.0)
            return 1;
        if (y < 0.0 && dst <= 1.0)
            return 1;
    } else if (x > 0.0) {
        if (y > 0.0 && dst <= 1.0)
            return 1;
        if (y < 0.0 && dst >= 1.0 && dst <= 2.0)
            return 1;
    } else if (x == 0.0 && dst <= 2.0)
        return 1;
    return 0;
}
 
double fRand(double fMin, double fMax)
{
    double f = (double)rand() / RAND_MAX;
    return fMin + f * (fMax - fMin);
}
 
#define SHOTS 10
 
int main() {
    double x, y;
    int n, cnt;
 
    srand(time(NULL));
    printf("points:\n");
    cnt = 0;
    for (n = 0; n < SHOTS; n++) {
        x = fRand(-2.5, 2.5);
        y = fRand(-2.5, 2.5);
        printf("\t(%5.2f, %5.2f)", x, y);
        if (got_it13(x, y)) {
            cnt++;
            printf(" +");
        }
        printf("\n");
    }
    printf("shots to the traget zone: %d\n", cnt);
    return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.11.2015, 08:12
Помогаю со студенческими работами здесь

Проверить попадание случайных и заданых пользователем точек в окружность?
Существует массив, он заполнен случайными точками. Но хотелось бы реализовать, чтобы пользователь мог дополнительно ввести свою собственную...

Задача на попадание
Здравствуйте! Задача сама по себе простая, но не могу её решить. Помогите! Буду очень благодарен!:)

Задача: На попадание луча в зрачок
#include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; print (double x, double y) { cout &lt;&lt; &quot;Enter:\n&quot;; cout &lt;&lt;...

Задача на попадание точки в заданную область
Суть в том, чтобы ввести координаты и программа выдавала принадлежит ли точка области, заданной в задаче или нет

Задача по теме «Вписанная окружность»
В треугольнике АВС углы А и В равны 38° и 86° соответственно. Найдите углы треугольника, вершинами которого являются точки касания сторон с...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru