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

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

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

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

17.03.2014, 21:48. Просмотров 272. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.03.2014, 21:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Транзитивность.Связка.Есть код на PHP. Нужен C (C++):

ЕСТЬ КОД НУЖЕН ВВОД И ВЫВОД В ФАЙЛ СДЕЛАТЬ - C++
заполнить массив змейкой начиная с 1 элемента пример 1 2 3 4 8 7 6 5 9 10 11 12 ............. РЕЗУЛЬТАТ ЗАПИСАТЬ В ФАЙЛ И...

Нужен код, в котором есть: Классы, Наследование, Виртуальная функция, Перегрузка операторов - C++
Скоро сдавать лабораторные работы, помогите пожалуйста)) Если можете, пришлите код, в котором есть: Классы, Наследование, Виртуальная...

Определить, есть ли среди цифр заданного трехзначного числа одинаковые ( код нужен на си ++) - C++
Определить, есть ли среди цифр заданного трехзначного числа одинаковые ( код нужен на си ++)

есть код и есть ошибка нужно найти дырку - C++
#include &lt;iostream.h&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; int main(int argc, char *argv) { int i,size,n; ...

Свойства нечеткого отношения (рефлексивность, симметричность, транзитивность) - C++
Прошу помощи! нужна программа, которая реализует проверку свойств нечеткого отношения(рефлексивность,антирефлексивность, симметричность,...

нужен аналог unloadfile php - функции но на С++ - C++
как с помощью среды IIS 5.x и VC 6.0 осуществить закачку на IIS сервер файла форма такого вида: &lt;FORM ...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.03.2014, 21:48
Привет! Вот еще темы с ответами:

Зачем нужен тип private, если есть protected? - C++
зачем нужен тип private если есть protected??? одного не достаточно? ведь свойства те же. и даже лучше...

Программа с Массивами, нужен код - C++
Дано одномерный массив целых чисел A размерности N (размерность и элементы массива ввести с клавиатуры). Найти количество отрицательных...

Нужен код, нуждающийся в оптимизации - C++
ребята - несколько необычная просьба - у кого нибудь может есть небольшой по объему ( меньше 500-600 строчек) код, написанный как можно...

Очень нужен код картотеки - C++
Очень нужен код для картотеки домашней библиотеки... Добавлено через 6 минут с исходными данными книги(автор, название, издательство...


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

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

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