Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C (СИ) Выяснить, сколько натуральных чисел состоит из нечётных цифр и сколько из различных цифр https://www.cyberforum.ru/ c-beginners/ thread1717513.html
Выяснить, сколько натуральных чисел между n и m>n состоит из нечётных цифр и сколько из различных цифр. Напечатать сами числа и их количества. Идей на данную программу просто нет...Помогите пж...
Задачка на считывание и запись чисел в файл C (СИ)
Доброго времени! Помогите с задачкой. Задачка на поиск данных в файле: "Осуществить: 1 – добавление, 2 – поиск (фамилия, з/п, должность)вывод строки ". Не вижу в коде ошибки, но в случае...
C (СИ) Точки заменить их порядковым номером https://www.cyberforum.ru/ c-beginners/ thread1717407.html
Задание звучит так: заменить все точки цифрами, с соответствующими им номерами. Написал этот код. Но тут проверка уже на самом выводе. Подскажите, как поменять в самой строке? #include "stdafx.h"...
C (СИ) Выбор трех точек по условию https://www.cyberforum.ru/ c-beginners/ thread1717375.html
Среди данного множества точек на плоскости выбрать 3 такие, чтобы треугольник, вершинами которого эти точки есть, содержал бы наибольшее количество точек множества. Может кто-то помочь?
Создать игру "кто хочет стать миллионером" C (СИ)
здравствуйте, можите помочь создать игру "кто хочет стать миллионером ", вся проблема в том что нужно создать в графическое меню,и брать вопросы с файла
C (СИ) ArtMoney. Тип переменной - "С точкой 4 байта". Что за тип? https://www.cyberforum.ru/ c-beginners/ thread1717169.html
Привет! В чужой программе имеется 4х байтовая переменная (значение (hex) - 00 00 10 42). ArtMoney выводит её правильно (тип - "С точкой 4 байта") - 36.0. Но если попробовать преобразовать её через...
C (СИ) Исключить из строки группы символов, расположенные между скобками [, ] https://www.cyberforum.ru/ c-beginners/ thread1717047.html
Можете помочь решить? С объяснением пожалуйста. На чистом СИ | Дана строка символов. Исключить из этой строки группы символов, расположенные между скобками . Сами скобки тоже должны быть исключены....
Поиск рейсов между заданными пунктами C (СИ)
Не могу понять, почему не работает функция find_punkt, она должна обеспечить поиск рейсов между заданными пунктами. И если есть возможность, помогите допилить функцию time, она должна искать три...
C (СИ) Сформировать матрицу, у которой в каждом столбце содержатся все числа из исходного набора https://www.cyberforum.ru/ c-beginners/ thread1716867.html
Даны целые положительные числа M, N и набор из M чисел. Сформировать матрицу размера M × N, у которой в каждом столбце содержатся все числа из исходного набора (в том же порядке).
C (СИ) Подсчитать количество различных слов, входящих в заданный текст С клавиатуры вводится текстовая строка. Написать программу, которая подсчитывает количество различных слов, входящих в заданный текст; выводит на экран количество использованных символов; удаляет все... https://www.cyberforum.ru/ c-beginners/ thread1716756.html
Дано слово. Проверить, можно ли его одинаково прочитать с права на лево и наоборот C (СИ)
Дано слово. Проверить, можно ли его одинаково прочитать с права на лево и наоборот.
C (СИ) Дано слово «информатика». Путем склеивания и вырезания получить слова форма и мак https://www.cyberforum.ru/ c-beginners/ thread1716753.html
Дано слово «информатика». Путем склеивания и вырезания получить слова «форма» и «мак».
3 / 3 / 5
Регистрация: 07.12.2013
Сообщений: 189
0

Найти выпуклую оболочку множества - C (СИ) - Ответ 9052556

23.04.2016, 11:31. Показов 544. Ответов 1
Метки (Все метки)

Всем привет. Задача - найти выпуклую оболочку множества (крайние точки множества, образующие выпуклый многоугольник - я решил делать через gift wrapping).
Суть:
Находим нижнюю точку, потом ищем точку, с которой (и с осью x) она образует наименьший угол, эту точку мы записываем в переменную point_now и повторяем поиск минимального угла, так пока следующей точкой не станет . Но что-то пошло не так. Я не понимаю, почему оно не работает(даже не дописаная).
Заранее спасибо.

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
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <math.h>
int main()
{
    int masX[50], masY[50], i, j;
    srand(time(NULL)); 
    for (i=0; i<6; i++)
    {
        masX[i]=rand()%10;
        masY[i]=rand()%10;
        printf("(%d; %d)\n", masX[i], masY[i]);
    }
    int lowest,id_lowest;
    lowest=*masY;
    for (i=0; i<6; i++)
    if(masY[i]<lowest) 
    {
    lowest=masY[i];
     id_lowest=i;
    }
    printf("%d\n", id_lowest);
    double minangle=10, angle;
    int point_nowX = masX[id_lowest],point_nowY=masY[id_lowest], point_testX, point_testY, id_minangle=-1;
    for (j=0; j<6; j++)
    {
        minangle=10;
        if (j!=0)
        {
        point_nowX=masX[id_minangle];
        point_nowY=masY[id_minangle];
        printf("POINT NOW - (%d; %d)\n", point_nowX, point_nowY);
      }
      for (i=0; i<6; i++)
      {
        if (i==id_lowest) continue;
        
        if (i==id_minangle && id_minangle!=-1) continue;
       
          angle=atan((double)abs(masY[i]-point_nowY)/(double)abs(masX[i]-point_nowX));
        
        if (masY[i]==point_nowY && masX[i]>point_nowX) angle=0;
        if (masY[i]==point_nowY && masX[i]<point_nowX) angle=2*1.57;
          printf("%lf= ", angle);
          if (masX[i]<=point_nowX && masY[i]>=point_nowY) angle+=1.57;
        
        else if (masX[i]<=point_nowX && masY[i]<=point_nowY) angle+=2*1.57;
        
          if (masX[i]>point_nowX && masY[i]<point_nowY) angle+=3*1.57;
        
          printf("%lf\n", angle);
        
          if (angle<minangle)
        {
            minangle=angle;
            id_minangle=i;
          }
      }
      printf("minangle = %lf in (%d; %d) with id %d\n", minangle, masX[id_minangle], masY[id_minangle], id_minangle);
    }
}
Добавлено через 21 час 16 минут
up.

Добавлено через 19 часов 24 минуты
И все же, хотя бы в строке 42 формула правильна?

Вернуться к обсуждению:
Найти выпуклую оболочку множества C (СИ)
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.04.2016, 11:31
Готовые ответы и решения:

Найти выпуклую оболочку множества
Задано множество N точек. Ai=1..N.Найти выпуклую оболочку этого множества,т.е. те точки,которые...

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

Дано n точек на плоскости. Построить их выпуклую оболочку - минимальную выпуклую фигуру, их содержащую
Дано n точек на плоскости. Построить их выпуклую оболочку - минимальную выпуклую фигуру, их...

Задано множество точек в трехмерном пространстве, найти выпуклую оболочку наименьшего объема
Задано множество точек в трехмерном пространстве. Найти его выпуклую оболочку, то есть множество...

1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.04.2016, 11:31

Построить выпуклую замкнутую оболочку
Построить выпуклую замкнутую оболочку y=1-x^(4/5)

пжста найдите ошибку в задаче на выпуклую оболочку
Здравствуйте,уже 2 дня не могу найти ошибку в коде,валится на 5 тесте. Задача: Даны точки(их...

Найти линейную оболочку векторов
Найти линейную оболочку векторов - элементов векторного пространства (2,2) - матриц: A=...

Найти проекцию вектора на линейную оболочку
дан вектор x = (14,16,2,5) . Нужно найти проекцию вектора x на L = (a,b) где a = (7,3,1,2) b =...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.