0 / 0 / 0
Регистрация: 27.03.2020
Сообщений: 92
1

Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-20, 20]

15.02.2021, 21:11. Показов 2250. Ответов 16
Метки php (Все метки)

Начали изучать php. Преподаватель ничего не рассказал и сразу дал задание. Помогите. Пока что я только попытался сделать проверку ввода данных. Больше ничего не работает. Даже не объяснили как осуществить ввод данных и создание массива.
Вот задание и код:
Дан массив целых чисел из n элементов, заполненный случайным образом числами из
промежутка [-20, 20].
1. Найти сумму четных элементов.
2. Подсчитать количество элементов массива, значения которых состоят из двух
нечетных цифр.
3. Найти номер последнего положительного элемента, делящегося на 5 с остатком 2.


HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<style>
   .b1 {
    background: blue; 
    color: white; 
    font-size: 15pt; 
    text-align: center;
   }
   .txt{
    font-size: 15pt;
    width: 433px;
   }
  </style>
<form method="post" action="index.php"> 
    <h1 style="text-align: center">I</h1> 
    <input type="text" name="number1" class="txt"  placeholder="Введите размерность массива"><br><br>
    <input type="submit" name="enter1" class="b1" value="Cгенерировать массив">
    <input type="submit" name="enter2" class="b1" value="Выполнить задания">
</form>

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$number1='';
if (isset($_POST["enter1"]) && isset($_POST["enter2"]){
    if (isset($_POST['number1'])) {
        if (is_numeric($_POST['number1'])) {
            $a = $_POST['number1'];
        } else {
            echo "Строки состоят не из чисел. Введите корректные значения" ;
        }
        
    } else {
        echo "Введите значения. Строки пустые" ;
    }
}
    else {
        echo " ";
    }
 
?>
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.02.2021, 21:11
Ответы с готовыми решениями:

Дан Массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-10,20]
1. Дан Массив целых чисел из n элементов, заполненный случайным образом числами из промежутка ....

Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-40,30]
1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка ....

Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-10,60]
1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка ....

Дан Массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-10,10]
1. Дан Массив целых чисел из n элементов, заполненный случайным образом числами из промежутка ....

16
Эксперт PHP
3790 / 3150 / 1322
Регистрация: 01.08.2012
Сообщений: 10,660
16.02.2021, 11:06 2
Цитата Сообщение от ELRlCK Посмотреть сообщение
как осуществить ввод данных
У вас же написано "Дан массив целых чисел", значит его нужно просто объявить, ни слова про форму.

Цитата Сообщение от ELRlCK Посмотреть сообщение
и создание массива
PHP
1
$arr = [];
Вот создание массива.

А так в задаче ничего сложного, перебираем в цикле массив и выполняем простые вычисления.
https://www.php.net/manual/ru/... .array.php
https://www.php.net/manual/ru/... oreach.php
0
0 / 0 / 0
Регистрация: 27.03.2020
Сообщений: 92
17.02.2021, 10:20  [ТС] 3
Jodah, у меня в задании должна быть форма. Просто не все задание написал. Я обязан вводить размер массива в форму и генерировать массив случайным образом. При этом при нажатии на 1ую кнопку должен выводится сам массив, п при нажатии на 2ую должны выводится результаты.


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
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
<style>
    .sub1 {
        background: navy;
        color: white; 
        font-size: 12pt;
        width: 335px;
        position:relative;
        left: 106px;
    }
 
    .sub2 {
        background: navy;
        color: white; 
        font-size: 12pt;
        width: 335px;
        position:relative;
        left:122px;
    }
 
    #rectangle {
    width: 900px;
    height: 150px;
    border-radius: 100px;
    background: Silver;
    z-index: 10;
    }
 
    #rec {
    width: 905px;
    height: 155px;
    border-radius: 100px;
    background: darkgrey;
    z-index: 20;
    }
 
    .txt{
        width: 690px;
        position: absolute;
        left: 115px;
        top: 14px;
    }
 
</style>
<form name="task1" method="post">
    <div id="rec">
        <div id="rectangle">
            <input placeholder="Введите размерность массива" type="text" name="input1" class="txt"><br><br>
            <input type="submit" name="enter1" value="Сгенерировать массив" class="sub1">
            <input type="submit" name="enter2" value="Выполнить задание" class="sub2">
        </div>
    </div>
</form>
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
<?php
    $number1='';
    $mass=array();
    function fill(&$mass, $n) {
        for ($i = 0; $i < $n; $i++)
            $mass[$i] = rand(-20,20);        
    }
 
    function show($mass) {
        echo "Массив: [";
        for ($i = 0; $i < count($mass) - 1; $i++) 
            echo $mass[$i], ", ";
        echo $mass[count($mass) - 1]."]<br>";
    }
 
    function check($mass) {
        $sum = 0;
        $k=0;
        $multiplicity = "";
        for ($i = 0; $i < count($mass); $i++) {
            if ($mass[$i] % 2 == 0) 
                $sum+=$mass[$i];
            if ($mass[$i] % 3 == 0 && $mass[$i] % 5 == 0)
                $multiplicity = $multiplicity.$i."|";
        }
        echo "Сумма четных эл-тов: ", $sum;
        if ($multiplicity == "")
            echo "<br>Нет элементов, значения которых кратны 3 и 5.";
        else
            echo "<br>Индексы элементов, значения которых кратны 3 и 5: |", $multiplicity;
    }
    if (isset($_POST["enter1"]) || isset($_POST["enter2"])){
        if (isset($_POST['input1'])){
            if(is_numeric($_POST['input1'])){
                if(isset($_POST["enter2"])){
                    check($mass);
                }
                $n = $_POST["input1"];
                fill($mass, $n);
                show($mass);
 
            } else {
                echo "Строки состоят не из чисел. Введите корректные значения" ;
            }
        } else {
            echo "Введите значения. Строки пустые" ;
        }
    } else {
        echo " ";
    }
    
    
?>
Вот что я смог сделать. Но у меня не работает. Я не понимаю как поступать с кнопками
0
Эксперт PHP
3790 / 3150 / 1322
Регистрация: 01.08.2012
Сообщений: 10,660
17.02.2021, 13:47 4
Лучший ответ Сообщение было отмечено ELRlCK как решение

Решение

Примерно так.

PHP/HTML
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
<?php
function make_random_array($count) {
    $arr = [];
    
    for($i = 0; $i < $count; $i++)
        $arr[$i] = rand(-20, 20);
    
    return $arr;
}
 
function show_array($arr) {
    echo '<pre>';
    print_r($arr);
    echo '</pre>';
}
 
// even = чётные
function get_sum_of_even_elements($arr) {
    $sum = 0;
    
    foreach($arr as $k => $v) {
        if($k % 2 === 0)
            $sum += $v;
    }
    
    return $sum;
}
 
if($_SERVER['REQUEST_METHOD'] === 'POST') {
    if(empty($_POST['number1']) or !is_numeric($_POST['number1']))
        echo 'Введите корректное число.';
    else {
        $arr = make_random_array($_POST['number1']);
        
        if(isset($_POST['enter1'])) {
            show_array($arr);
        } elseif(isset($_POST['enter2'])) {
            echo 'Сумма чётных элементов: ' . get_sum_of_even_elements($arr);
        }
    }
}
?>
 
<style>
   .b1 {
    background: blue; 
    color: white; 
    font-size: 15pt; 
    text-align: center;
   }
   .txt{
    font-size: 15pt;
    width: 433px;
   }
  </style>
<form method="post" action="index.php"> 
    <h1 style="text-align: center">I</h1> 
    <input type="text" name="number1" class="txt"  placeholder="Введите размерность массива"><br><br>
    <input type="submit" name="enter1" class="b1" value="Cгенерировать массив">
    <input type="submit" name="enter2" class="b1" value="Выполнить задания">
</form>
1
0 / 0 / 0
Регистрация: 27.03.2020
Сообщений: 92
18.02.2021, 09:56  [ТС] 5
Jodah, спасибо. У меня еще такой вопрос. Могу ли я как то вывести массив в форму? Я слышал, что можно как то передать значение из php в <form></form>
0
Эксперт PHP
3790 / 3150 / 1322
Регистрация: 01.08.2012
Сообщений: 10,660
18.02.2021, 14:06 6
ELRlCK,
PHP/HTML
1
<input value="<?= $_POST['value'] ?>">
Или что значит "вывести массив в форму"?
0
0 / 0 / 0
Регистрация: 27.03.2020
Сообщений: 92
21.02.2021, 12:57  [ТС] 7
Jodah, я например хочу записать в какую-то строку числа массива, а потом эту строку вывести в форму. Как я могу это сделать? Нам рассказали про какие-о скрытые переменные, но не объяснили как этим пользоваться
0
0 / 0 / 0
Регистрация: 27.03.2020
Сообщений: 92
21.02.2021, 13:03  [ТС] 8
Jodah, Я хочу например массив, который у меня выводится ниже формы вывести в саму форму под кнопки.

Я изменил форму, немного переписал код, появились новые ошибки.
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
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
<style>
    .button1 {
        background: navy;
        color: white; 
        font-size: 12pt;
        width: 335px;
        position:relative;
        left: 106px;
    }
 
    .button2 {
        background: navy;
        color: white; 
        font-size: 12pt;
        width: 335px;
        position:relative;
        left:122px;
    }
 
    #rectangle {
    width: 900px;
    height: 150px;
    border-radius: 25px;
    background: Silver;
    z-index: 10;
    }
 
    #rec {
    width: 905px;
    height: 155px;
    border-radius: 25px;
    background: darkgrey;
    z-index: 20;
    }
 
    .txt{
        width: 690px;
        position: absolute;
        left: 115px;
        top: 14px;
    }
 
</style>
<form name="task1" method="post">
    <div id="rec">
        <div id="rectangle">
            <input placeholder="Введите размерность массива" type="text" name="n" class="txt"><br><br>
            <input type="submit" name="enter1" value="Сгенерировать массив" class="button1">
            <input type="submit" name="enter2" value="Выполнить задание" class="button2">
        </div>
    </div>
</form>
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
<?php
    //$arr=array();
    function fill(&$arr, $n) {
        for ($i = 0; $i < $n; $i++)
            $arr[$i] = rand(-20,20);        
    }
 
    function show($arr) {
        echo "Массив: [";
        for ($i = 0; $i < count($arr) - 1; $i++) 
            echo $arr[$i], ", ";
        echo $arr[count($arr) - 1]."]<br>";
    }
    
    function check($arr)
    {
        $sum=0;
        $q=0;
        $num=-1; 
        for ($i=0;$i<=count($arr);$i++)
        {
            
            if (($arr[$i]%2)==0){$sum+=$arr[$i];}
            if ((($arr[$i]%5)==2) && ($arr[$i]>0)){$num = $i;}
            if($arr[$i]<0)
            {
                $arr[$i]*=-1;
                $doz=floor($arr[$i] / 10);
                $un=$arr[$i]%10;
                if($doz == $un)
                {
                    if(($doz * 11) == $arr[$i])
                    {
                        if(($doz%2!=0) && ($un%2!=0)){$q+=1;}
                    }
                }
                else
                {
                    if(($doz%2!=0) && ($un%2!=0)){$q+=1;}
                };
                $arr[$i]*=-1;
            };
        }
        echo "Задание 1: $sum.<br>";
        echo "Задание 2: $q.<br>";
        if ($num == -1)
        {
            echo "Задание 3: Таких элементов в массиве нет.<br>";
        }
        else{echo "Задание 3: $num<br>";} 
    }
 
if (isset($_POST["enter1"]) || isset($_POST["enter2"])){
        if (isset($_POST['n'])){
            if(is_numeric($_POST['n']))
            {
                $n = $_POST["n"];
                fill($arr, $n);
                show($arr);
                if(isset($_POST["enter2"])){
                    check($arr);
                }
            } 
            else 
            {
                echo "Введите корректное значение" ;
            }
        } 
        else 
        {
            echo "Введите значения. Строки пустые" ;
        }
    } else {
        echo " ";
    }
?>

Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-20, 20]
То место, куда я хочу перенести вывод массива
Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-20, 20]
0
0 / 0 / 0
Регистрация: 27.03.2020
Сообщений: 92
21.02.2021, 13:05  [ТС] 9
Jodah,
Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-20, 20]
Хочу чтобы было +- как на этой картинке
0
Эксперт PHP
3790 / 3150 / 1322
Регистрация: 01.08.2012
Сообщений: 10,660
21.02.2021, 16:38 10
Цитата Сообщение от ELRlCK Посмотреть сообщение
хочу записать в какую-то строку числа массива
PHP
1
2
3
<?php
$arr = [10, 20, 30, 40, 50];
echo implode(', ', $arr);
Цитата Сообщение от ELRlCK Посмотреть сообщение
скрытые переменные
Имеется ввиду <input type="hidden">? Т.е. массив генерируется только 1 раз, и затем нажатие кнопок обрабатывает именно этот, ранее созданный массив?
0
0 / 0 / 0
Регистрация: 27.03.2020
Сообщений: 92
21.02.2021, 16:41  [ТС] 11
Jodah, " Т.е. массив генерируется только 1 раз, и затем нажатие кнопок обрабатывает именно этот, ранее созданный массив?"
Да, именно так. Нужно чтобы массив создался 1 раз, по первой кнопке вывелся в форму и не исчезал, а по второй кнопке выводились рез-ты(уже ниже формы)
0
Эксперт PHP
3790 / 3150 / 1322
Регистрация: 01.08.2012
Сообщений: 10,660
21.02.2021, 16:52 12
ELRlCK, а если через сессии? Это гораздо проще, чем параметры формы.
0
0 / 0 / 0
Регистрация: 27.03.2020
Сообщений: 92
21.02.2021, 16:55  [ТС] 13
Jodah, Нам через форму сказали
0
0 / 0 / 0
Регистрация: 27.03.2020
Сообщений: 92
22.02.2021, 17:59  [ТС] 14
Jodah, если через сессии проще, подскажите как делать пожалуйста.
0
Эксперт PHP
4810 / 3828 / 1592
Регистрация: 24.04.2014
Сообщений: 11,239
22.02.2021, 18:07 15
ELRlCK, в чем именно проблема? Массив в хиденах можно так поместить
PHP
1
2
3
foreach ([1, 2, 100500] as $key => $value) {
    printf('<input type="hidden" name="array[%d]" value="%d"', $key, $value);
}
Добавлено через 2 минуты

Не по теме:

Цитата Сообщение от Jodah Посмотреть сообщение
<?= $_POST['value'] ?>
PHP
1
<?= htmlentities($_POST['value'], ENT_QUOTES, 'UTF-8') ?>

0
0 / 0 / 0
Регистрация: 27.03.2020
Сообщений: 92
22.02.2021, 18:10  [ТС] 16
Jewbacabra, хорошо, спасибо. А как избавиться от предупреждений, которые я написал выше??
0
Эксперт PHP
4810 / 3828 / 1592
Регистрация: 24.04.2014
Сообщений: 11,239
22.02.2021, 18:12 17
Цитата Сообщение от ELRlCK Посмотреть сообщение
А как избавиться от предупреждений, которые я написал выше??
Дебажить
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.02.2021, 18:12
Помогаю со студенческими работами здесь

Дан массив целых чисел из 25 элементов, заполненный случайным образом числами из промежутка [-35,75]:
(пожалуйста с процедурами и функциями) Дан массив целых чисел из 25 элементов, заполненный...

Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-35,75]. Удалить и
Что не так? Подскажите пожалуйста var Form2: TForm2; N: integer; M : array of integer; ...

Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-80,150]
Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка . ...

Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-200,500]
1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка ....

Дан массив целых чисел из n элементов, заполненный случайным образом числами из заданного пользователями промежутка
Дан массив целых чисел из n элементов, заполненный случайным образом числами из заданного...

Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-200,500]. Удалить
Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка ....


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru