Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
15 / 14 / 4
Регистрация: 22.05.2013
Сообщений: 524
1

Операции с 2-умя строками, сравнение строк

10.06.2017, 13:56. Показов 1359. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
буквы, входящие в строку более одного раза, количество вхождений таких букв в строку (для каждой строки) и буквы, присутствующие в обеих строках.

Подскажите пожалуйста, как это седлать,
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.06.2017, 13:56
Ответы с готовыми решениями:

Функции работы со строками символов: определение размера строки, копирование строк, добавление строк, сравнение строк
На языке Ассемблер написать функции работы со строками символов: определение размера строки,...

Сравнение строк, введенных с клавиатуры со строками файла
char* x=strstr(op,' '); x++; if(strcmp(x,buf)==NULL){ ...

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

Visual Prolog. Представление символов и строк, операции над строками.
1. Разработать программу реализующую различные способы представления символов и строк, а также...

6
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
10.06.2017, 14:57 2

Не по теме:

Цитата Сообщение от SENDEJER Посмотреть сообщение
как это седлать,
Точно не знаю, берешь лошадь, седло и... седлаешь


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
function str_to_arr($str) {
    return preg_split('//u', $str, -1, PREG_SPLIT_NO_EMPTY);
}
 
function arr_to_str($arr) {
    return implode(' ', $arr) . '<br>';
}
 
$str = 'test';
$symbols = [];
$arr = str_to_arr($str);
foreach ($arr as $s) {
    if (array_key_exists($s, $symbols)) {
        ++$symbols[$s];
    } else {
        $symbols[$s] = 1;
    }
}
$multiple_symbols = array_filter(
    $symbols,
    function ($s) { return $s > 1; }
);
echo arr_to_str(array_keys($multiple_symbols));
 
$str1 = 'test';
$str2 = 'qwerty';
$common_symblos = array_unique(
    array_intersect(
        str_to_arr($str1),
        str_to_arr($str2)
    )
);
echo arr_to_str($common_symblos);
0
15 / 14 / 4
Регистрация: 22.05.2013
Сообщений: 524
10.06.2017, 15:14  [ТС] 3
Цитата Сообщение от Jewbacabra Посмотреть сообщение
Точно не знаю, берешь лошадь, седло и... седлаешь
подскажите , как для данного кода модифицировать ? а то немного запутался
HTML5
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
<html>
<head>
</head>
<body>
<h2> Операции с строками)) </>
<form action="L1.php" method=post>
<table border=0>
<tr>
<td>Введите 1-ю строку</td>
<td><input type="text" name="ST1" size= "18"  placeholder= "    Введите 1-ю строку" required
maxlength="20"></td>
</tr>
<tr>
<td>Введите 2-ю строку</td>
<td><input type="text" name="ST2" size="18"  placeholder= "    Введите 2-ю строку" required 
 
maxlength="20"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value= "И того)"></td>
</tr>
</table>
</form>
</body>
</html>
Добавлено через 5 минут
точнее формы
0
2 / 1 / 5
Регистрация: 08.06.2017
Сообщений: 15
11.06.2017, 14:35 4
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
if(isset($_POST['submit']) && !empty($_POST['ST1']) && !empty($_POST['ST2']))
{
    $st1 = $_POST['ST1'];
    $st2 = $_POST['ST2'];
 
    if(mb_strlen($str1) > 2 && mb_strlen($str2) > 2) // Если оба слов больше 2 символа
    {
        if(strcasecmp(mb_strtolower($st1), mb_strtolower($st2)) == 0) // Если две строки равно по буквам
        {
            echo "<p>Оба строки равны! Проверено с функцией <b>strcasecmp()</b> - бинарно-безопасное сравнение строк без учета регистра<p>";
        }
 
        if($st1 == $st2) 
        {
            echo "<p>Оба строки равны! Проверено с функцией <b>\"==\"</b> - равно<p>";
        }
    }
}
0
15 / 14 / 4
Регистрация: 22.05.2013
Сообщений: 524
11.06.2017, 16:27  [ТС] 5
Цитата Сообщение от DEXSHOG Посмотреть сообщение
PHP
спасибо, сейчас попробую

Добавлено через 18 минут
Цитата Сообщение от DEXSHOG Посмотреть сообщение
PHP
извини но, это не то , что нужно

вот это нужно

"
буквы, входящие в строку более одного раза, количество вхождений таких букв в строку (для каждой строки) и буквы, присутствующие в обеих строках.
"
0
2 / 1 / 5
Регистрация: 08.06.2017
Сообщений: 15
13.06.2017, 15:18 6
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
function mb_count_chars($string, $mode, $encoding = 'UTF-8') // Необходимая функция которое возвращает информацию о символах, входящих в мультибайтном строке
{
    $l = mb_strlen($string, $encoding);
    $unique = array();
    for ($i = 0; $i < $l; $i++) {
        $char = mb_substr($string, $i, 1, $encoding);
        if (!array_key_exists($char, $unique)) {
            $unique[$char] = 0;
        }
        $unique[$char]++;
    }
 
    if ($mode == 1) {
        return $unique;
    }
 
    if ($mode == 3) {
        $res = '';
        foreach ($unique as $index => $count) {
            $res .= $index;
        }
        return $res;
    }
 
    throw new \Exception('не поддерживаемый mode ' . $mode);
}
 
function mb_str_split($string, $split_length = 1, $encoding = 'UTF-8') // Необходимая функция которое преобразует мультибайтную строку в массив
{
    if ($split_length == 0) {
        throw new \Exception('Аргумент должно быть больше чем 0');
    }
 
    $ret = array();
    $len = mb_strlen($string, $encoding);
    for ($i = 0; $i < $len; $i += $split_length) {
        $ret[] = mb_substr($string, $i, $split_length, $encoding);
    }
    if (!$ret) {
        // behave like str_split() on empty input
        return array("");
    }
 
    return $ret;
}
 
function checkStr($string, $status=NULL) // Функция для подсчета вхождение букв в строке
{
    $array =  mb_count_chars($string,1);
 
    foreach ($array as $key => $value) 
    {
        if($value == 1) unset($array[$key]);
    }
 
    if($status <> 1) // Если $status не равно 1 тогда возвращем в цикле кол-во букв в строке
    {
        foreach ($array as $key => $value) {
            echo "<p>Буква <b>\"$key\"</b> в строке <b>\"$string\"</b> встречается <b>\"$value\"</b> раз.</p>";
        }
    }
 
    elseif ($status == 1) // Если статус равно 1 возвращем массив с кол-во букв в строке
    {
        return $array;
    }
}
 
function checkStrings($string1, $string2, $status = NULL) // Функция для подсчета вхождение букв в двух строках
{
    if(empty($string1) || empty($string2) || !isset($string1) || !isset($string2)) return false;
 
    $array1 = mb_str_split($string1);
    $array2 = mb_str_split($string2);
    $array = array_unique(array_intersect($array1, $array2));
 
    if($status == NULL) // Если $status пуста или не существует возвращем простой результат  подобно: Схождение букв в строках: "о" "т" "а" "б" "е" "к"
    {
       echo "Схождение букв в строках <b>\"$string1\"</b> и <b>\"$string2\"</b> : <b>";
       foreach ($array as $key => $value) {
           echo "\"$value\" ";
       }
       echo "</b>";
    }
 
    if($status == 1) // Если $status равно 1 тогда возвращем массив с схождением букв в строках
    {
        return $array;
    }
    
 
    $string = $string1;
    $string .=$string2;
 
    $array =  mb_count_chars($string,1);
 
    if($status == 2) // Если $status равно 2 тогда возвращем в цикле вхождение букв в оба строках
    {
        foreach ($array as $key => $value) {
            echo "<p>Буква <b>\"$key\"</b> в строках <b>\"$string1\"</b> и <b>\"$string2\"</b> встречается <b>\"$value\"</b> раз.</p>";
        }
    }
 
    if($status == 3) // Если $status равно 3 тогда возвращем массив вхождение букв в оба строках
    {
        
 
        foreach ($array as $key => $value) 
        {
            if($value == 1) unset($array[$key]);
        }
 
        return $array;
    }
}
Тестирование функции:

1) Функция - checkStrings()
PHP
1
2
3
4
$str1 = "Программист";
$str2 = "Функция";
 
checkStrings($str1,$str2);
Результат:
Схождение букв в строках "Программист" и "Функция" : "и"
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$str1 = "Программист";
$str2 = "Функция";
 
$array = checkStrings($str1,$str2, 1); // когда статус == 1
echo "<pre>";
print_r($array); 
echo "</pre>"; 
 
// Результат:
 
Array
(
    [8] => и
)
PHP
1
2
3
4
$str1 = "Программист";
$str2 = "Функция";
 
checkStrings($str1,$str2, 2); // когда статус == 2
Результат:

Буква "П" в строках "Программист" и "Функция" встречается "1" раз.

Буква "р" в строках "Программист" и "Функция" встречается "2" раз.

Буква "о" в строках "Программист" и "Функция" встречается "1" раз.

Буква "г" в строках "Программист" и "Функция" встречается "1" раз.

Буква "а" в строках "Программист" и "Функция" встречается "1" раз.

Буква "м" в строках "Программист" и "Функция" встречается "2" раз.

Буква "и" в строках "Программист" и "Функция" встречается "2" раз.

Буква "с" в строках "Программист" и "Функция" встречается "1" раз.

Буква "т" в строках "Программист" и "Функция" встречается "1" раз.

Буква "Ф" в строках "Программист" и "Функция" встречается "1" раз.

Буква "у" в строках "Программист" и "Функция" встречается "1" раз.

Буква "н" в строках "Программист" и "Функция" встречается "1" раз.

Буква "к" в строках "Программист" и "Функция" встречается "1" раз.

Буква "ц" в строках "Программист" и "Функция" встречается "1" раз.

Буква "я" в строках "Программист" и "Функция" встречается "1" раз.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$str1 = "Программист";
$str2 = "Функция";
 
$array = checkStrings($str1,$str2, 3); // когда статус == 3
echo "<pre>";
print_r($array); 
echo "</pre>"; 
 
// Результат:
 
Array
(
    [р] => 2
    [м] => 2
    [и] => 2
)
1) Функция - checkStr()
PHP
1
2
3
$str1 = "Программист";
 
checkStr($str1);
Результат :

Буква "р" в строке "Программист" встречается "2" раз.

Буква "м" в строке "Программист" встречается "2" раз.

PHP
1
2
3
4
5
6
7
8
9
10
11
$str1 = "Программист";
 
checkStr($str1, 1); // когда статус == 1
 
// Результат:
 
Array
(
    [р] => 2
    [м] => 2
)
Ну если у кого то есть варианты оптимизации пожалуйста. У меня такое решение получился. Ну если это вам поможет используйте в чем то в своем проекте. Если есть ошибки где-то тогда прошу прощения за ранее...)
0
15 / 14 / 4
Регистрация: 22.05.2013
Сообщений: 524
15.06.2017, 10:58  [ТС] 7
Цитата Сообщение от DEXSHOG Посмотреть сообщение
Ну если у кого то есть варианты оптимизации пожалуйста. У меня такое решение получился. Ну если это вам поможет используйте в чем то в своем проекте. Если есть ошибки где-то тогда прошу прощения за ранее...)
большое спасибо
0
15.06.2017, 10:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.06.2017, 10:58
Помогаю со студенческими работами здесь

Динамический двумерный массив строк и операции со строками (поиск, обрезка, слияние)
Создать динамический двумерный массив на 10 ячеек (для десяти строк). Заполнить его строчками...

Используя процедуры и функции обработки строк, произвести необходимые операции над строками.
Используя процедуры и функции обработки строк, произвести необходимые операции над строками. ...

Определить операции над строками : формирование новой строки из двух строк по правилу с = (a>b) ? a : b
Задание выглядит следующим образом: Определить класс-строку. В класс включить два конструктора:...

Работа со строками(операции над строками)
Пусть дана последовательность, содержащая от 2 до 50 слов, в каждом из которых от 1 до 8 строчных...

Операции со строками
помогите пожалуйста с заданием в Delphi: Дана строка содержащая текст. найти длину самого длинного...

Операции со строками
Помогите, пожалуйста Ввести два отдельных строки, содержащие по меньшей мере по 4 слова. Выполните...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru