Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
2 / 2 / 1
Регистрация: 03.12.2012
Сообщений: 33

Матрица . Как уменьшить код

06.12.2012, 14:25. Показов 3165. Ответов 33

Студворк — интернет-сервис помощи студентам
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
 
$base_numbers = array(1, 3, 10, 2, 5);
            $increment_matrix = array();
            $summ = 0;
 
            foreach ($base_numbers as $base_number) {
                $increment_matrix[] = $summ + $base_number;
                $summ += $base_number;
            }   
            
            array_shift($increment_matrix);
        echo "<pre>";
            echo implode("<br>",$increment_matrix); 
        echo "</pre>";  
$base_numbers = array(1, 10, 2, 5, 1);
            $increment_matrix = array();
            $summ = 0;
                    foreach ($base_numbers as $base_number) {
                $increment_matrix[] = $summ + $base_number;
                $summ += $base_number;
            }   
            
            array_shift($increment_matrix);
        echo "<pre>";
            echo implode("<br>",$increment_matrix); 
        echo "</pre>";  
$base_numbers = array(1, 2, 5, 1, 3);
            $increment_matrix = array();
            $summ = 0;
                    foreach ($base_numbers as $base_number) {
                $increment_matrix[] = $summ + $base_number;
                $summ += $base_number;
            }   
            
            array_shift($increment_matrix);
        echo "<pre>";
            echo implode("<br>",$increment_matrix); 
        echo "</pre>";  
$base_numbers = array(1, 5, 1, 3, 10);
            $increment_matrix = array();
            $summ = 0;
                    foreach ($base_numbers as $base_number) {
                $increment_matrix[] = $summ + $base_number;
                $summ += $base_number;
            }   
            
            array_shift($increment_matrix);
        echo "<pre>";
            echo implode("<br>",$increment_matrix); 
        echo "</pre>";  
        
?>
как уменьшыть код , чтоб непересоздавать новий масив $base_numbers = array();

Добавлено через 3 минуты
И как вивести на екран вот так:
4 14 16 21
11 13 18 19
3 8 9 12
6 7 10 20
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.12.2012, 14:25
Ответы с готовыми решениями:

Как уменьшить код?
Здравствуйте, написал код. Но меня смущает 3 запроса к БД. Как его можно сделать короче? &lt;? ob_start(); $sql= &quot;SELECT * FROM...

Навигация по сайту. Как оптимизировать и уменьшить код
Придумываю навигацию по сайту. Вот что вышло, как уменьшить может в массив засунуть кто подскажет? &lt;? echo '&lt;a...

Уменьшить код
Доброго дня всем. Можно ли уменьшить данный код? И как прописать так, чтоб если по user agent устройство не найдено, писало, Неизвестное...

33
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
06.12.2012, 14:32
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function matrix(array $base_numbers){
    $increment_matrix = array();
    $summ = 0;
    foreach ($base_numbers as $base_number) {
        $increment_matrix[] = $summ + $base_number;
        $summ += $base_number;
    }
    array_shift($increment_matrix);
    echo implode(", ", $increment_matrix), '<br />';
}
matrix(array(1, 3, 10, 2, 5));
matrix(array(1, 10, 2, 5, 1));
matrix(array( 1, 2, 5, 1, 3));
matrix(array(1, 5, 1, 3, 10));
0
2 / 2 / 1
Регистрация: 03.12.2012
Сообщений: 33
06.12.2012, 15:55  [ТС]
Спс работает
Неподскажыте ,а как зделать также , єсли в масив $base_numbers, цыфры заносятса з клавиатуры.
Функция на ввод цыфр у масив $base_numbers меня єсть.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?
 
echo("<form name='Chusla' method='post' action=''>");
 
for($i=0; $i<5; $i++){
 
echo("<input type='text' name='lat[]' value='' required multiple> </br>");  
}
echo("<input type='submit' name='btn' value='ENter'>"); 
 
 
$base_numbers=array();
if (isset($_POST['btn'])){
foreach ($_POST['lat'] as $base_numbers[]){
}}
echo "<pre>";
print_r ($base_numbers);
echo "</pre>";
 
 
?>
0
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
06.12.2012, 16:28
PHP
1
2
3
4
5
6
7
8
if (isset($_POST['btn'])){
    $base_numbers = array();
    foreach ($_POST['lat'] as $item){
        $base_numbers[] = (int) $item;
    }
 
    matrix($base_numbers);
}
0
2 / 2 / 1
Регистрация: 03.12.2012
Сообщений: 33
06.12.2012, 16:47  [ТС]
Я склал етот код. После ввода 1 3 10 2 5 мне выводит толька одну строку:
4, 14, 16, 21,
а нэ все

4 14 16 21
11 13 18 19
3 8 9 12
6 7 10 20

Возможна я не так понял, Вот код. Посмотрите Пожалуйста:
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
<?
 echo("<form name='Chusla' method='post' action=''>");
 for($i=0; $i<5; $i++){
 echo("<input type='text' name='lat[]' value='' required multiple> </br>");  
}echo("<input type='submit' name='btn' value='ENter'>"); 
 
 
$base_numbers=array();
if (isset($_POST['btn'])){
foreach ($_POST['lat'] as $base_numbers[]){
}}
echo "<pre>";
print_r ($base_numbers);
echo "</pre>";
 
 if (isset($_POST['btn'])){
    $base_numbers = array();
    foreach ($_POST['lat'] as $item){
        $base_numbers[] = (int) $item;
    }
 
    matrix($base_numbers);
}
function matrix($base_numbers){
    $increment_matrix = array();
    $summ = 0;
    foreach ($base_numbers as $base_number) {
        $increment_matrix[] = $summ + $base_number;
        $summ += $base_number;
    }
    array_shift($increment_matrix);
    echo implode(", ", $increment_matrix), '<br />';
    }
?>
0
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
06.12.2012, 17:20
строки 8-14 уберите
а сколько он должен выводить строк? и отукда должны браться значения?

Добавлено через 2 минуты
или те значения которые он посчитал при первом проходе должны идти во второй и так 4 раза?
0
2 / 2 / 1
Регистрация: 03.12.2012
Сообщений: 33
06.12.2012, 17:28  [ТС]
Значеня берутса с полей формы.
Єсли ввсти 5 цыфр например (1,3,10,2,5)
Должна сфорироватса матрица 4х4
4 14 16 21
11 13 18 19
3 8 9 12
6 7 10 20

Єсли ввсти 6 цыфр например (1,3,10,2,5,7)
Должна сфорироватса матрица 5х5

и так далие



Нарисунку пример алгоритма:
Вложение 208529
0
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
06.12.2012, 17:32
ну вы же в своем первом коде для того что бы сформировать 4 массива на вход подавали тоже 4 массива
PHP
1
2
3
4
$base_numbers = array(1, 3, 10, 2, 5);
$base_numbers = array(1, 10, 2, 5, 1);
$base_numbers = array(1, 2, 5, 1, 3);
$base_numbers = array(1, 5, 1, 3, 10);
откуда должны браться еще 3 массива, если сейчас вы на вход подаете только 1 массив?
0
2 / 2 / 1
Регистрация: 03.12.2012
Сообщений: 33
06.12.2012, 17:47  [ТС]
Тогда подскажыте пожалуйста, как из одново масива зделать матрицу N на N
как написать алгоритм
0
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
06.12.2012, 17:50
Цитата Сообщение от radno Посмотреть сообщение
Нарисунку пример алгоритма:
http://saveimg.ru/show-image.p... c9ccec623d
под этот алгоритм нужно абсолютно другой код писать
0
2 / 2 / 1
Регистрация: 03.12.2012
Сообщений: 33
06.12.2012, 17:57  [ТС]
Нэ поможите в написание кода,
Я думул что в моем коде нужна чтота дописать и получитса, или посоветуйте как ето зделать.
0
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
06.12.2012, 18:21
вот вроде работает, попробуйте попроверять для разных вариантов
Кликните здесь для просмотра всего текста
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
<?php
 
function matrix($base_numbers)
{
    $increment_matrix = array();
    $summ = 0;
    foreach ($base_numbers as $base_number) {
        $increment_matrix[] = $summ + $base_number;
        $summ += $base_number;
    }
    array_shift($increment_matrix);
    echo implode(", ", $increment_matrix), '<br />';
}
 
if (isset($_POST['btn'])) {
    $base = array();
    foreach ($_POST['lat'] as $item) {
        $base[] = (int)$item;
    }
    $cnt = count($base);
    
    for ($i = 0; $i < ($cnt - 1); $i ++){
        $line = array();
        $line[0] = $base[0];
        for ($j = 1; $j < $cnt; $j ++){
            if (($cnt - 1) < ($j + $i)){
                $line[$j] = $base[$j + $i - $cnt];
            } else {
                $line[$j] = $base[$j + $i];
            }
        }
        matrix($line);
    }
    
    
    /**
    matrix(array($base[0], $base[1], $base[2], $base[3], $base[4]));
    matrix(array($base[0], $base[2], $base[3], $base[4], $base[0]));
    matrix(array($base[0], $base[3], $base[4], $base[0], $base[1]));
    matrix(array($base[0], $base[4], $base[0], $base[1], $base[2]));
    */
}
?>
 
<form name='Chusla' method='post'>
    <?php for ($i = 0; $i < 5; $i++) : ?>
        <p><input type='text' name='lat[]' required multiple /> <br /></p>
    <?php endfor ?>
    <input type='submit' name='btn' value='ENter' />
</form>
0
2 / 2 / 1
Регистрация: 03.12.2012
Сообщений: 33
06.12.2012, 18:36  [ТС]
Очень благодарен буду разбиратса
0
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
06.12.2012, 18:38
вообщем я посмотрел вроде работает все как нужно, при любых размерах
вот в этой строке можете поставить любое знначение $i для ввода более длинных строк, но выводится матрица будет того размера сколько строк было введено
Цитата Сообщение от alpex Посмотреть сообщение
<?php for ($i = 0; $i < 5; $i++) : ?>
Добавлено через 1 минуту
Цитата Сообщение от radno Посмотреть сообщение
Очень благодарен буду разбиратса
да не видно что благодарен
0
2 / 2 / 1
Регистрация: 03.12.2012
Сообщений: 33
06.12.2012, 18:38  [ТС]
Спасибо!
0
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
06.12.2012, 19:05
можно изменить, что бы поле для ввода было одно, а числа вводились, например через запятую, или какой нибудь другой разделитель.

Добавлено через 12 минут
вот так попробуйте вроде лучше получается даже с редактированием
Кликните здесь для просмотра всего текста
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
<?php
 
function matrix($base_numbers)
{
    $increment_matrix = array();
    $summ = 0;
    foreach ($base_numbers as $base_number) {
        $increment_matrix[] = $summ + $base_number;
        $summ += $base_number;
    }
    array_shift($increment_matrix);
    return $increment_matrix;
}
 
if (isset($_POST['btn'])) {
    
    $values = explode(',', $_POST['lat']); // здесь в кавыычках ставим разделитель чисел при вводе
    
    $base = array();
    foreach ($values as $item) {
        $base[] = (int)$item;
    }
    $string_base = implode(' ', $base);
    $cnt = count($base);
    $matrix = array();
    for ($i = 0; $i < ($cnt - 1); $i ++){
        $line = array();
        $line[0] = $base[0];
        for ($j = 1; $j < $cnt; $j ++){
            if (($cnt - 1) < ($j + $i)){
                $line[$j] = $base[$j + $i - $cnt];
            } else {
                $line[$j] = $base[$j + $i];
            }
        }
        $matrix[] = matrix($line);
    }
}
?>
 
<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <style>
            table {border: 1px double grey;}
            td {border: 1px solid grey; width: 20px; height: 20px;}
        </style>
    </head>
    <body>
        <form name='Chusla' method='post'>
            <p>Введите числа через запятую </p>
            <p><input type='text' name='lat' required="required" /> <br /></p>
            <p><input type='submit' name='btn' value='ENter' /></p>
        </form>
        <?php if (isset($matrix)) : ?>
            <table>
            <tbody>
                <p><b>Исходная строка :</b></p>
                <p><b><?=$string_base ?></b></p>
            </tbody>
            <?php foreach ($matrix as $row) : ?>
                <tr>
                <?php foreach ($row as $value) : ?>
                    <td><?=$value ?></td>
                <?php endforeach ?>
                </tr>
            <?php endforeach ?>
            </table>
        <?php endif ?>
    </body>
</html>
0
2 / 2 / 1
Регистрация: 03.12.2012
Сообщений: 33
08.12.2012, 00:26  [ТС]
Не подскажеш как например вот с такого масива "2,3,1,7" вывести следующую матрицу:
Не толька:
5, 6, 13
3,10,12
9,11,14

А
5, 6, 13
3,10,12
9,11,1(mod13)
//число по модулю берется от суда 13=2+3+1+7
6, 9, 10
5,12,1(%13)
9,11,3
вот рисонок

 Комментарий модератора 
Прикрепляйте файлы и изображения к сообщениям. Кнопка со скрепкой в расширенном режиме.
0
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
08.12.2012, 04:21
я не понимаю там никакой логики
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
08.12.2012, 09:38
я понимаю только как первую строчку составить..
Цитата Сообщение от radno Посмотреть сообщение
5, 6, 13
2+3, 2+3+1, 2+3+1+7
на второй строчке мой мозг уехал обратно домой..
0
2 / 2 / 1
Регистрация: 03.12.2012
Сообщений: 33
08.12.2012, 14:19  [ТС]
3 = 2 +1, 10 = 2 +1 +7; 12 = 2 +1 +7 +2
9 = 2 +7; 11 = 2 +7 +2, 14 = 11 +3
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.12.2012, 14:19
Помогаю со студенческими работами здесь

Как уменьшить код
Сабж, код: &lt;div id=&quot;wrapper&quot;&gt; &lt;div id=&quot;galery&quot;&gt; &lt;img src=&quot;&quot; alt=&quot;&quot;&gt; &lt;img src=&quot;&quot; alt=&quot;&quot;&gt; &lt;img src=&quot;&quot; alt=&quot;&quot;&gt; &lt;img src=&quot;&quot;...

Как уменьшить код?
Есть задание: Информация о доходах М фирм за N месяцев, заданная в виде таблицы Определить наибольшую прибыль среди всех фирм за все...

Движение танка. Как уменьшить код?
Задача: Танк в компьютерной игре может двигаться в одном из четырех направлений, обозначим их числами: 1-север, 2 - восток, 3 - юг, 4 -...

Как можно уменьшить код скрипта?
Есть скрипт: &lt;html&gt; &lt;head&gt; &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;http://freebit.clan.su/tizer.css&quot; /&gt; &lt;/head&gt; &lt;body&gt; ...

Как уменьшить объем программы упростить код
Здравствуйте, вопрос такой, можно ли как то упростить данный код программы cделать меньшим по объему , суть её заключается в том что...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru