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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Danteran
0 / 0 / 0
Регистрация: 17.03.2014
Сообщений: 4
#1

Транзитивность.Связка.Есть код на PHP. Нужен C - C++

17.03.2014, 21:48. Просмотров 247. Ответов 0
Метки нет (Все метки)

Здравствуйте. Имеется известная задача связности. (Транзитивность)
Установить связаны ли машины напрямую либо опосредованно,либо необходимо установить новое соединение.
Имеется код на PHP. Кому нетрудно переведите на С.Хотя бы какието моменты. В частности ввод массива массивов и функции add,union .
PHP
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
/**
 * Класс, отвечающий за поиск и объединение двух IP-адресов методом быстрого поиска
 */
class QuickFindConnector
{
    // Здесь будут храниться все связи. Ключи - это IP-адреса, значения - это "связки"
    private $_relations = array();
 
    /**
     * Если IP-адреса отсутствуют в массиве $_relations - добавим их туда
     */
    public function add($ip1, $ip2)
    {
        if(!array_key_exists($ip1, $this->_relations))
            $this->_relations[$ip1] = $ip1;
        if(!array_key_exists($ip2, $this->_relations))
            $this->_relations[$ip2] = $ip2;        
    }
 
    /**
     * Проверяем, связаны ли IP-адреса
     */
    public function find($ip1, $ip2)
    {
        return $this->_relations[$ip1] === $this->_relations[$ip2] ? true : false;
    }
 
    /**
     * Связываем IP-адреса
     */
    public function union($ip1, $ip2)
    {
        // Значение этой переменной указывает на "связку" первого IP
        $ip1Relation = $this->_relations[$ip1];
 
        // Перебираем массив со связями и обновляем "связки" (для тех IP-адресов, у которых такая же 
        // "связка", как у первого IP) "связкой" второго IP
        foreach($this->_relations as $key => $value)
        {
            if($value === $ip1Relation)
                $this->_relations[$key] = $this->_relations[$ip2];
        }        
    }
}
PHP
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
// Зададим входящие данные обычным массивом, для простоты.
// Скорее всего, пары IP-адресов для связывания должны поступать извне.
$input = array(
    array('255.255.0.3', '255.255.0.4'),
    array('255.255.0.4', '255.255.0.9'),
    array('255.255.0.8', '255.255.0.0'),
    array('255.255.0.2', '255.255.0.3'),
    array('255.255.0.5', '255.255.0.6'),
    array('255.255.0.2', '255.255.0.9'),
    array('255.255.0.5', '255.255.0.9'),
    array('255.255.0.7', '255.255.0.3'),
    array('255.255.0.4', '255.255.0.8'),
    array('255.255.0.5', '255.255.0.6'),
    array('255.255.0.0', '255.255.0.2'),
    array('255.255.0.6', '255.255.0.1'),
);
 
$quickFindConnector = new QuickFindConnector();
 
foreach($input as $pair)
{
    // Эти два IP-адреса должны быть связаны
    $ip1 = $pair[0];
    $ip2 = $pair[1];
 
    $quickFindConnector->add ($ip1, $ip2);
 
    // Если данные не связаны - связываем их
    if($quickFindConnector->find ($ip1, $ip2) === true)
        continue;
    else
        $quickFindConnector->union ($ip1, $ip2);
 
 
    // Теперь мы можем что-то сделать с IP-адресами, установить соединение, к примеру
    echo "$ip1 | $ip2 - connection established! <br />";
}
Добавлено через 5 минут
(Именно ПЕРЕВОД неприницпиален,если можете помочь просто с нуля,буду благодарен!)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.03.2014, 21:48     Транзитивность.Связка.Есть код на PHP. Нужен C
Посмотрите здесь:

Нужен код, нуждающийся в оптимизации C++
C++ Нужен рабочий код интерпретатора
есть код и есть ошибка нужно найти дырку C++
нужен аналог unloadfile php - функции но на С++ C++
Определить, есть ли среди цифр заданного трехзначного числа одинаковые ( код нужен на си ++) C++
ЕСТЬ КОД НУЖЕН ВВОД И ВЫВОД В ФАЙЛ СДЕЛАТЬ C++
C++ Нужен код, в котором есть: Классы, Наследование, Виртуальная функция, Перегрузка операторов
C++ Свойства нечеткого отношения (рефлексивность, симметричность, транзитивность)
C++ Очень нужен код картотеки
C++ Программа с Массивами, нужен код

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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