bala g ch Ответов: 2

Как напечатать матрицу?


Я хочу напечатать матрицу такую, что

Рассмотрим, что исходная матрица выглядит следующим образом

1 2 3 
4 5 6
7 8 9


Теперь я хочу напечатать следующее

Шаг 1: печать 1

Шаг 2: печать 2

Шаг 3: печать 3

Шаг 4: печать 6

Шаг 5: Печать 9

Шаг 6: печать 8

Шаг 7: печать 7

Шаг 8: печать 4

Шаг 9: печать 5

1 2 3
    6  first step
    9

1 2 3
    6 second step
  8 9


1 2 3
    6 3rd step
7 8 9

1 2 3
4   6 4th step
7 8 9

1 2 3
4 5 6  5th step 
7 8 9


Что я уже пробовал:

я пытался отобразить код выше способом?

[no name]

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

[no name]

предположим, у меня есть матрица A(3*3).
я хочу напечатать эту матрицу следующим образом:-

для примера:

-> A11,A12,A13,A23,A33,A32,A31,A21,A22 как я могу напечатать матрицу следующим образом.

Leo Chapiro

Как уже сказал @NotPolitcallyCorrect, покажите нам свой код, Пожалуйста, мы не можем читать ваши мысли, чувак!

[no name]

В соответствии с политикой моей компании показать вам мой код невозможно.

Leo Chapiro

Но, похоже, можно (в соответствии с политикой вашей компании) обратиться за помощью на этом форуме. И здесь есть Рулы: вам нужно показать, чего вы уже достигли, прежде чем просить код ...

[no name]

Затем вам нужно перейти на сайт, который может читать ваши мысли. Мы не собираемся делать за вас вашу работу. Хорошая попытка.

Nelek

МММ... Я просто отредактировал это, чтобы ответить ниже

[no name]

Да, "против политики компании" говорит мне, что его учитель проверяет онлайн-форумы на наличие мошенников. Особенно оглядываясь назад на его историю задавания действительно простых вопросов без усилий.

[no name]

Это не основная работа, на самом деле эта задача очень сложна.Если ваш гений даст ему ответ иначе сделайте эту вещь?

Richard MacCutchan

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

Nelek

Хорошо... Должен признаться, когда я писал первый комментарий, Я не уделял так много внимания вашей серии. Я могу признать, что это не основной вопрос. Но и не очень сложный.

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

Patrice T

Очень жаль, что в соответствии с политикой сайта мы не можем помочь вам с кодом :-)

[no name]

Ладно оставь это я пытаюсь?

jeron1

Вот это хорошо! Может быть, попробовать форум алгоритмов, если никакой код не будет задействован.

Nelek

Ответы уже есть :)

Philippe Mori

Тогда не показывайте существующий код от вашей компании, а код, который вы написали сами... Вы всегда можете упростить код так, чтобы мы получили самое необходимое. Только не забудьте удалить пароль своей базы данных!

Кстати, сделать это не должно быть трудно.

И как мы можем ответить вам, если вы не можете поделиться своим корпоративным кодом? Если вы используете код, который мы предоставляем, то код вашей компании будет частично находиться в интернете...

Вам нужно иметь немного здравого смысла и обсудить со своей компанией, хотите ли вы shpw какой-то код. Может быть, они подумают, что вы недостаточно компетентны для этой работы, и заменят вас кем-то другим...

Patrice T

Вы хотите напечатать элементы матрицы в спиральном порядке ?

2 Ответов

Рейтинг:
20

Nelek

Прежде всего ... извините, но одна записка в сторону:
То, что правила вашей компании не позволяют показывать код... это совершенно непонятно, и я нахожу очень хорошим, что вы следуете правилам.
Но...
Вы просите о помощи, повторяя 3 раза одно и то же предложение Не прояснить что-нибудь.
Если вы не хотите показывать код компании, то не делайте этого, но, по крайней мере, вы все еще можете использовать псевдокод, чтобы объяснить шаги, которые вы делаете, и где вы получаете проблемы
Узнайте, как использовать отладчик. Это то, что вы должны быть в состоянии решить самостоятельно на самом деле довольно быстро

Пожалуйста, не принимайте это на свой счет, это не нападение на вас, а просто философский вопрос: вы уверены, что готовы выполнить эту работу?
И я не говорю о техническом содержании, все новички в самом начале. Я думаю о других способностях... то есть любопытстве, упорстве, логическом мышлении и других связанных с ними.

Я бы посоветовал вам сначала попробовать это самостоятельно и учиться на своих ошибках, это лучшая школа, которую вы можете получить. Не сдавайся так легко и не приходи сюда просить. Конечно, это удобно, и вы, вероятно, всегда найдете кого-то, кто ответит вам. Наиболее важным моментом является... вы не узнаете так много, и вы упустите очень большую награду для своей души, то есть удовлетворение от того, что вы можете решать вещи самостоятельно.

----------------------
Теперь перейдем к технической стороне. Я не собираюсь давать вам готовое решение, и, вероятно, есть лучшие способы решить эту проблему, но... это все еще способ, которым вы можете сделать вывод / догадаться, просто взяв бумагу и карандаш и сделав 2 или 3 примера для поиска шаблона:

Предполагая матрицу A (MxN) независимо от значений M и N

1) Подумайте о том, чтобы пройти через вашу матрицу как квадраты / прямоугольники, каждый из которых представляет собой одну полную итерацию. Вам понадобится столько итераций, сколько ((наименьший индекс / 2) + (наименьший индекс % 2))
т.е.
A (2x6) = 2/2 + 2%2 = 1 прямоугольник или итерация
A (6x3) = 3/2 + 3%2 = 2 прямоугольника или итерации
A (7x7) = 7/2 + 7%2 = 4 прямоугольника или итерации

2) Как вы делаете каждый квадрат?
Строка 1: от A(1+squareNr, 1+squareNr) до A (1+squareNr, N-squareNr)
Строка 2: от A(1+squareNr, N-squareNr) до A (M-squareNr, N-squareNr)
Строка 3: от A(M-squareNr, N-squareNr) до A (M-squareNr, 1+squareNr)
Строка 4: от A(M-squareNr, 1+squareNr) до A(1+(squareNr+1), 1 + квадрат)

3) вы заканчиваете, когда достигаете последнего элемента = M*N
A (2x6) = 12
A (6x3) = 18
A (7x7) = 49

4) Теперь вам нужно только выяснить, как использовать циклы и условия для управления этим. Пункт 2) рассматривает итерации на основе 0, адаптируйте его, если вы предпочитаете начинать отсчет с 1

правки, чтобы исправить орфографию и сделать предложение более связным


Leo Chapiro

Слова мудрости, +5 :)

Nelek

Спасибо

Рейтинг:
12

OriginalGriff

Это пахнет домашним заданием, так что никакого кода!
Это не сложно, это просто громоздко.
Объявите восемь переменных: X, Y, dX, dY, minX, maxX, minY, maxY.
Установите их в 0, 0, 1, 0, 0, ширина, 0, высота соответственно.
Теперь установите цикл, чтобы посмотреть на каждую ячейку: ширина * высота.
Внутри цикла выведите ячейки X,Y.
Теперь добавьте dX к X и dY к Y.
Проверить Х:
Если он равен maxX, то уменьшите его на единицу, увеличьте y на единицу, увеличьте minX и установите dX в 0, dY в 1.
Если он равен minX, то увеличьте его на единицу, уменьшите y на единицу, уменьшите maxY и установите dX в 0, dY в -1.
Регистрация Г:
Если он равен maxY, то уменьшите его на единицу, уменьшите x на единицу, уменьшите maxX и установите dX в -1, dY в 0.
Если она равна мины затем увеличивает его на один, увеличение Х на единицу, прирост шалунья, и набор DX на 1, DY в 0.

Этого должно хватить.


Nelek

Разные способы, один и тот же результат :)
Ваш выглядит более профессионально, у вас есть +5

Nelek

Только одна вещь... у вас есть 2 maxX, я полагаю, вы забыли одну шалунью

OriginalGriff

Ой! Второй Макс должен был быть макси - исправлено, спасибо!