Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Получение информации об ОС http://www.cyberforum.ru/cpp-beginners/thread1122202.html
Есть программа которая показывает следующие функции: 1 Имя компьютера 2 Системная информация 3 Системные цвета 4 Директорию Windows Код программы: #include "stdafx.h" #include <windows.h>...
C++ Перегрузка операторов под vector Добрый день. Просьба направить в правильном направлении при перегрузке операторов : using namespace std; class polinom{ http://www.cyberforum.ru/cpp-beginners/thread1122200.html
C++ Область видимости. один класс не видит другой класс
Добрый день! такая проблема. Есть базовый класс Q. От него наследуется 2 класса Р и G. Класс P имеет два конструктора 1 принимает число а 2 принимает объект класса g. Класс g имеет один...
Подскажите недостающие библиотеки C++
Необходимо построить прямую, используя алгоритм DDA-линии. Используя алгоритм из...
C++ Поиск элементов, которые имеются в двух массивах. http://www.cyberforum.ru/cpp-beginners/thread1122171.html
Написать функцию для поиска элементов, которые имеются в обоих массивах А и В в нескольких экземплярах
C++ Ввод с клавиатуры данных в массив, состоящий из восьми элементов типа TRAIN помогите пожалуйста, не получается сделать,туго с динамикой. • Описать структуру с именем TRAIN, содержащую следующие поля: • название пункта назначения; • номер поезда; • время отправления.... подробнее

Показать сообщение отдельно
Danteran
0 / 0 / 0
Регистрация: 17.03.2014
Сообщений: 4

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

17.03.2014, 21:48. Просмотров 286. Ответов 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 минут
(Именно ПЕРЕВОД неприницпиален,если можете помочь просто с нуля,буду благодарен!)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru