Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
0 / 0 / 1
Регистрация: 15.06.2016
Сообщений: 18
1

Заполнить массив случайным образом символами, выделить в отдельные массивы буквы латинского алфавита

20.12.2016, 13:45. Показов 4261. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
С наступающим новым годом, форумчане. Помогите пожалуйста с PHP, уже голову сломала. Всё что в интернете нашла, не то((
вот задание: Заполнить массив случайным образом произвольными символами, выделить в отдельные массивы буквы латинского алфавита, как заглавные, так и строчные. Для контроля результата сделать распечатку массивов, в том числе исходного.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.12.2016, 13:45
Ответы с готовыми решениями:

Массив: Выделить в отдельные массивы заглавные гласные и заглавные согласные буквы латинского алфавита
В исходном массиве символов, заполненном случайным образом символами с кодами в диапазоне от 21 до...

Заполнить массив случайным образом буквами латинского алфавита и цифрами (арабскими)
Заполнить массив случайным образом буквами латинского алфавита и цифрами (арабскими). Отсортировать...

Заполнить два массива размером 20 и 30 элементов случайным образом буквами латинского алфавита
Задачка: Заполнить два массива размером 20 и 30 элементов случайным образом буквами латинского...

Выделить на экране зеленым цветом все буквы латинского алфавита
Нужна помощь, сам написать не в состоянии( Выделить на экране зеленым цветом все буквы латинского...

9
79 / 48 / 22
Регистрация: 30.06.2016
Сообщений: 187
20.12.2016, 14:07 2
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$array_1 = array();
$array_2 = array();
$array_3 = array();
 
$symbols = array('a','b','c', 'я', 'в', 'д', 'В', 'D'); // можно дополнить любыми символами которые нужны
$initial_size = 20; // размер массива в символах 
 
for($i = 0; $i <= $initial_size; $i++) {
    $array_1[] = $symbols[rand(0,sizeof($symbols)-1)];
}
foreach($array_1 as $symbol) {
    if(preg_match('/[a-z]/', $symbol)) {
        $array_2[] = $symbol;
    }
    if(preg_match('/[A-Z]/', $symbol)) {
        $array_3[] = $symbol;
    }
}
 
var_dump($array_1); // первоначальный массив
var_dump($array_2); // латинские строчные
var_dump($array_3); // латинские заглавные
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
20.12.2016, 15:05 3
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
<?php
 
$n = 0; //изменить на длину массива (0 - все символы a-z A-z а-я А-Я, кроме Ё и ё)
 
$symbols = array_merge(
    range('a', 'z'),
    range('A', 'Z')
);
$range = range(chr(0xC0), chr(0xDF));
array_walk($range, function($v) use(&$symbols){
    $v = iconv('CP1251', 'UTF-8', $v);
    $symbols[] = $v;
    $symbols[] = mb_strtolower($v, 'UTF-8');
});
shuffle($symbols);
 
if($n)
    $symbols = array_slice($symbols, 0, $n);
 
$small = array_filter($symbols, function($v) {
    return $v >= 'a' && $v <= 'z';
});
$big = array_filter($symbols, function($v) {
    return $v >= 'A' && $v <= 'Z';
});
 
var_dump(
    $symbols, //all letters
    $small, //small letters
    $big //big letters
);
0
65 / 65 / 47
Регистрация: 04.12.2016
Сообщений: 214
20.12.2016, 16:16 4
Лучший ответ Сообщение было отмечено memch как решение

Решение

Во первых, нужно сгенерировать массив. Я так понимаю, символы должны быть из таблицы ASCII. В этом случае всё просто:

PHP
1
2
3
4
5
6
$string = [];
$length = 50;
 
for($i = 0; $i < $length; $i++) {
   $string[] = chr(rand(32, 126));//в диапазоне от 32 до 126 в таблице находятся "видимые" символы.
}
Теперь, нам нужно выделить из массива заглавные и строчные латинские буквы. Для этого нужна функция array_filter:
PHP
1
2
$upper = array_filter($string, function($ch) { return $ch >= 'a' && $ch <= 'z'; });
$lower = array_filter($string, function($ch) { return $ch >= 'A' && $ch <= 'Z'; });
Осталось вывести. Функция implode объединяет массив символов в строку:
PHP
1
echo "Random: " . implode($string) . "\nUpper: " . implode($upper) . "\nLower: " . implode($lower);
В итоге, получаем следующий код.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
 
$string = [];
$length = 50;
 
for($i = 0; $i < $length; $i++) {
   $string[] = chr(rand(32, 126));
}
 
$upper = array_filter($string, function($ch) { return $ch >= 'a' && $ch <= 'z'; });
$lower = array_filter($string, function($ch) { return $ch >= 'A' && $ch <= 'Z'; });
 
echo "Random: " . implode($string) . "\nUpper: " . implode($upper) . "\nLower: " . implode($lower);
0
0 / 0 / 1
Регистрация: 15.06.2016
Сообщений: 18
20.12.2016, 21:06  [ТС] 5
Vshining, Спасибо, что так подробно расписали, но почему-то ругается на третью строку в последнем куске кода. Пишет
Parse error: syntax error, unexpected '[' in Z:\home\localhost\www\lab41.php on line 9


Добавлено через 7 минут
sadn3r, спасибо большое) но как сделать вывод более красивым? не через дамп?

Добавлено через 3 минуты
KOPOJI, Спасибо большое, а не могли вы немного прокомментировать свой код? не совсем понятно(
0
79 / 48 / 22
Регистрация: 30.06.2016
Сообщений: 187
20.12.2016, 21:30 6
Цитата Сообщение от memch Посмотреть сообщение
sadn3r, спасибо большое) но как сделать вывод более красивым? не через дамп?
смотря что вы понимаете под красотой
0
0 / 0 / 1
Регистрация: 15.06.2016
Сообщений: 18
20.12.2016, 21:59  [ТС] 7
sadn3r, исходный массив:...., строчные:...., прописные:.... но только каждый массив с новой строки

Добавлено через 14 минут
Vshining, разобралась уже) спасибо большое)
0
79 / 48 / 22
Регистрация: 30.06.2016
Сообщений: 187
20.12.2016, 22:25 8
PHP
1
2
3
echo 'исходный массив: '.join(',', $array_1)."<br>";
echo 'строчные: '.join(',', $array_2)."<br>";
echo 'прописные: '.join(',', $array_3)."<br>";
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
21.12.2016, 15:28 9
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
<?php
 
$n = 0; //изменить на длину массива (0 - все символы a-z A-z а-я А-Я, кроме Ё и ё)
 
//символы в интервале от a до z и от A до Z
$symbols = array_merge(
    range('a', 'z'),
    range('A', 'Z')
);
//символы от А до Я
$range = range(chr(0xC0), chr(0xDF));
//добавляем в массив символов русские буквы (как прописные, так и строчные)
array_walk($range, function($v) use(&$symbols){
    $v = iconv('CP1251', 'UTF-8', $v);
    $symbols[] = $v;
    $symbols[] = mb_strtolower($v, 'UTF-8');
});
//перемешиваем символы
shuffle($symbols);
 
//если указано максимальное количество элементов, обрезаем перемешанный массив до нужного количества
if($n)
    $symbols = array_slice($symbols, 0, $n);
 
//ищем строчные буквы латинского алфавита
$small = array_filter($symbols, function($v) {
    return $v >= 'a' && $v <= 'z';
});
//ищем прописные буквы латинского алфавита
$big = array_filter($symbols, function($v) {
    return $v >= 'A' && $v <= 'Z';
});
//выводим результат
var_dump(
    $symbols, //all letters
    $small, //small letters
    $big //big letters
);
1
0 / 0 / 1
Регистрация: 15.06.2016
Сообщений: 18
21.12.2016, 19:39  [ТС] 10
KOPOJI, Спасибо, теперь понятно))
0
21.12.2016, 19:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.12.2016, 19:39
Помогаю со студенческими работами здесь

Случайным образом после каждой буквы вставить любую букву алфавита
2)случайным образом после каждой буквы вставить любую букву алфавита. например я изучаю- яэ...

Предложение содержит буквы латинского и русского алфавитов. Вывести буквы только латинского алфавита
Предложение содержит буквы латинского и русского алфавитов. Написать программу, которая выводит...

Заполнить массив строчными буквами латинского алфавита
Заполнить массив строчными буквами латинского алфавита. Нужно максимально примитивное решение.

Случайным образом сгенерировать массив символов алфавита
Добрый день! Необходимо поместить случайный символ алфавита в каждый элемент массива char, причем:...

Массив А(N,N) содержит некоторые буквы латинского алфавита
Массив А(N,N) содержит некоторые буквы латинского алфавита, расположенные в произвольном порядке....

Числовые массивы заполнить по формуле, с клавиатуры и случайным образом
Числовые массивы. Заполнить по формуле, с клавиатуры, случ. числа. Подскажите пожалуйста как...


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

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