The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Транспонирование матрицы 6х6, !*! medved_1408, 29-Апр-10, 13:50  [смотреть все]
Помогите решить задачу. Нужно транспонировать матрицу 6х6 в shell.
Написала код, но выводит не корректно. Подскажите, что нужно изменить.

rows=6
columns=6
n=35
m=6
export index
export tmp
declare -a array1=(1 2 3 4 5 6 7 8 9 0 9 8 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1 2 3 4 5 1 1 1 6 7)
declare -a resarray
echo "Первоначальная: "
echo ${array1[*]} | xargs -n $columns
for ((i=0;i< $n;i++)) do
for ((j=0;j< $columns;j++)) do

let "index=$i*$columns+$j"
let "index2=$j*$columns+$i"
echo "index" $index
echo "index2" $index2
          resarray[$index]=${array1[$index2]}
done

done
echo "итог: "
echo ${resarray[*]} | xargs -n $columns

  • Транспонирование матрицы 6х6, !*! Andrey Mitrofanov, 14:01 , 29-Апр-10 (1)
    >Нужно транспонировать матрицу 6х6 в shell.
    >Подскажите, что нужно изменить.

    Предлагаю изменить постановку задачи...............

    • Транспонирование матрицы 6х6, !*! medved_1408, 14:29 , 29-Апр-10 (2)
      >Предлагаю изменить постановку задачи...............

      Задание дал преподаватель.

      • Транспонирование матрицы 6х6, !*! Недовольный, 14:35 , 29-Апр-10 (3)
        >>Предлагаю изменить постановку задачи...............
        >Задание дал преподаватель.

        Тогда учитесь делать самостоятельно

        • Транспонирование матрицы 6х6, !*! medved_1408, 14:42 , 29-Апр-10 (4)
          >Тогда учитесь делать самостоятельно

          Я и пытаюсь. Подсказать кто-нибудь может по делу. Может я изначально не правильно начала делать. Матрицу он мне транспонирует, но еще выводит какие-то числа.


          • Транспонирование матрицы 6х6, !*! allez, 15:28 , 29-Апр-10 (5)
            >>Тогда учитесь делать самостоятельно
            >
            >Я и пытаюсь. Подсказать кто-нибудь может по делу. Может я изначально не
            >правильно начала делать. Матрицу он мне транспонирует, но еще выводит какие-то
            >числа.

            Подсказать? Да без проблем. Присмотритесь к переменным n, m и rows, подумайте как следует и
            решение задачи у вас в кармане. Кстати, откуда у вас вообще взялись эти переменные и какую
            функцию они выполняют?

            P. S. Я вот к этим переменным присмотрелся, подумал и матрица нормально транспонировалась. ;-)

            • Транспонирование матрицы 6х6, !*! medved_1408, 15:34 , 29-Апр-10 (6)
              m и rows - не нужны. забыла их удалить от прежнего варианта. n - число элементов в массиве.
              • Транспонирование матрицы 6х6, !*! medved_1408, 15:41 , 29-Апр-10 (7)
                Она у меня транспонируется, но с  итоговой матрицей выводится еще 15 сторок с цифрами.
                • Транспонирование матрицы 6х6, !*! medved_1408, 15:58 , 29-Апр-10 (8)
                  Что не так с переменными. Я не знаю. Думаю над задачей уже сутки. Если бы, до чего-то умного додумалась, не стала бы писать. Помогмте!
                  • Транспонирование матрицы 6х6, !*! allez, 18:03 , 29-Апр-10 (10)
                    >Что не так с переменными. Я не знаю. Думаю над задачей уже
                    >сутки. Если бы, до чего-то умного додумалась, не стала бы писать.
                    >Помогмте!

                    Ну что с ними может быть не так? Разве что то, что две из них нафиг не нужны. Кстати, попробуйте
                    умножить 35 (а точнее, 36) на 6, а потом посчитать количество лишних цифр в выводе вашего
                    скрипта. И зачем вам явным образом указывать количество элементов матрицы, если известно
                    количество столбцов (columns) и строк (как это будет по-английски - n, m или все-таки rows, а? ;-))?

                    P. S. Впрочем, можете в мое сообщение сильно не углубляться. Вам Андрей Митрофанов уже дал
                    исчерпывающий ответ.

  • Транспонирование матрицы 6х6, !*! Andrey Mitrofanov, 16:35 , 29-Апр-10 (9)
    >rows=6
    >columns=6
    >n=35
    >m=6
    >for ((i=0;i< $n;i++)) do

    Непорпавимое повреждение кармы наступит немедленно:

    ;i<rows;

    >for ((j=0;j< $columns;j++)) do

    • Транспонирование матрицы 6х6, !*! medved_1408, 18:04 , 29-Апр-10 (11)

      >;i<rows;

      тот же результат: транспонированная матрица+ 15 лишних строк.
      Не могу понять откуда они появляются.
      пробовола проверять index, что бы он не был больше 35, но на проверку(через if) выдает ошибку.


      • Транспонирование матрицы 6х6, !*! Andrey Mitrofanov, 18:21 , 29-Апр-10 (12)
        Двойное, гыгыг, повреждение занесено в:

        unset resarray
        for ((i=0;i< rows;i++)) do

      • Транспонирование матрицы 6х6, !*! allez, 21:01 , 29-Апр-10 (14)
        >
        >
        >>;i<rows;
        >
        > тот же результат: транспонированная матрица+ 15 лишних строк.
        >Не могу понять откуда они появляются.
        >пробовола проверять index, что бы он не был больше 35, но на
        >проверку(через if) выдает ошибку.

        М-да, как все запущено... :-)
        В общем, найдите энное количество отличий между вашим изначальным скриптом и этим:


        $ cat matrix.sh
        #!/bin/bash

        rows=6
        columns=6
        # Следующие четыре строки не нужны совсем, то есть абсолютно :-)
        #n=35
        #m=6
        #export index
        #export tmp
        declare -a array1=(1 2 3 4 5 6 7 8 9 0 9 8 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1 2 3 4 5 1 1 1 6 7)
        declare -a resarray
        echo "Первоначальная: "
        echo ${array1[*]} | xargs -n $columns
        for ((i=0;i< $rows;i++)) do
          for ((j=0;j< $columns;j++)) do

            let index=$i*$columns+$j
            let index2=$j*$columns+$i
        # Убрано для наглядности, чтобы вывод не загромождался лишней информацией
        #    echo "index = $index"
        #    echo "index2 = $index2"
            resarray[$index]=${array1[$index2]}
          done

        done
        echo "итог: "
        echo ${resarray[*]} | xargs -n $columns

        $ ./matrix.sh
        Первоначальная:
        1 2 3 4 5 6
        7 8 9 0 9 8
        3 4 5 6 7 8
        9 8 7 6 5 4
        3 2 1 2 3 4
        5 1 1 1 6 7
        итог:
        1 7 3 9 3 5
        2 8 4 8 2 1
        3 9 5 7 1 1
        4 0 6 6 2 1
        5 9 7 5 3 6
        6 8 8 4 4 7


  • Транспонирование матрицы 6х6, !*! Andrey Mitrofanov, 18:32 , 29-Апр-10 (13)
    Матрицы на баше?! Куда я попал....

    >rows=6
    >columns=6
    >n=35
    >m=6
    >export index
    >export tmp
    >declare -a array1=(1 2 3 4 5 6 7 8 9 0
    >9 8 3 4 5 6 7 8 9 8 7
    >6 5 4 3 2 1 2 3 4 5 1
    >1 1 6 7)

    unset resarray

    >declare -a resarray
    >echo "Первоначальная: "
    >echo ${array1[*]} | xargs -n $columns

    for ((i=0;i<=n;i++)) do
      j=$((i/columns+i%columns*rows))
      resarray[$i]=${array1[j]}
    done

    >echo "итог: "
    >echo ${resarray[*]} | xargs -n $columns




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру