Форум программистов, компьютерный форум, киберфорум
QBasic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035

Получить матрицу n*n, заполненную по диагоналям

05.12.2010, 10:22. Показов 983. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
вводится n, надо получить матрицу n*n, заполненную по диагоналям, например:
1 2 6
3 5 7
4 8 9
вот что получилось
QBasic/QuickBASIC
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
CLS
INPUT "vvedite n"; n
DIM a(n, n)
DO
    i = i + 1
    IF (i AND 1) = 0 THEN c = 1: ELSE c = -1
    SELECT CASE i
        CASE IS <= n
            d = 0
            IF (i AND 1) = 0 THEN b = b + 1 ELSE a = a + 1: b = 1
        CASE IS > n
            IF (i AND 1) = 0 THEN a = a + 1 ELSE b = b + 1
    END SELECT
    FOR y = a TO b STEP c
        IF (i AND 1) = 0 THEN d = b - y + a ELSE d = d + 1
        FOR x = d TO d
            r = r + 1
            a(y, x) = r
        NEXT
    NEXT
    SWAP a, b
LOOP UNTIL i = 2 * n
FOR y = 1 TO n
    FOR x = 1 TO n
        LOCATE y + 1, x * 4
        PRINT a(y, x);
    NEXT
    PRINT
NEXT
надо ли тут что переделывать?
как по другому можно сделать выравнивание печати?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.12.2010, 10:22
Ответы с готовыми решениями:

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

Массив: Получить матрицу, заполненную 0 и 1 по главной и побочной диагонали
Получить матрицу: 1 0 0…0 0 1 0 1 0…0 1 0 0 0 1…1 0 0 …………… 0 0 1…1 0 0 0 1 0…0 1 0 1 0 0…0 0 1

Получить матрицу размера n*m, заполненную случайными действительными числами от 0 до 25
Получить матрицу размера n*m, заполненную случайными действительными числами от 0 до 25. Указать элементы с наибольшим значением в...

1
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
05.12.2010, 21:58
надо ли тут что переделывать?
Если всё работает зачем утруждаться, можно потратить несколько часов и вогнать эту логику в один цикл, но зачем?

как по другому можно сделать выравнивание печати?
Через USING - ограниченное применение, можно в графическом режиме создать собственный оператор печати текста с точностью до пикселя и там уже делать процедуру печати матрицы с выравниванием(можно слизать шрифт со знакогенератора кому лень свой шрифт делать). А можно делать все в VB на FlexGrid'е - самый удобный вариант, особенно для "тяжёлых" заданий по линейке.

Добавлено через 2 часа 7 минут
PureBasic
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
DECLARE SUB TakeFont ()
DECLARE SUB PrintCharXY (x%, y%, ASCII%, cv%)
DIM SHARED Smb%(255, 15), TwoPOW%(7)
 
  SCREEN 13
 
  TakeFont
  FOR i% = 25 TO 0 STEP -1
   PrintCharXY 20 + i% * 4, 20 + i% * 4, 65 + i%, 31 + (i% AND 15) + 1
  NEXT
 
SUB PrintCharXY (x%, y%, ASCII%, cv%)
     FOR GY% = 0 TO 15
        FOR GX% = 0 TO 7
          IF (Smb%(ASCII%, GY%) AND TwoPOW%(GX%)) = TwoPOW%(GX%) THEN PSET (GX% + x%, GY% + y%), cv%
        NEXT
     NEXT
END SUB
 
SUB TakeFont
  '  Таблица степеней двойки для скорости
  FOR i% = 0 TO 7: TwoPOW%(i%) = 2 ^ i%: NEXT
  '  Копируем побитно системный шрифт
  FOR i% = 0 TO 255
     LINE (0, 0)-(7, 15), 0, BF
     LOCATE 1, 1: PRINT CHR$(i%)
     FOR GY% = 0 TO 15
        ST% = 0
        FOR GX% = 0 TO 7
          IF POINT(GX%, GY%) = 15 THEN ST% = ST% + TwoPOW%(GX%)
        NEXT
        Smb%(i%, GY%) = ST%
     NEXT
  NEXT
END SUB
Вот кстати содрал системный шрифт, пользуйся, напиши свои процедуры PrintText, PrintMatrix. Параметры системного шрифта: 8 пикселей по горизонтали и 16 по вертикали.

Добавлено через 8 часов 18 минут
Печать матриц и текста:
PureBasic
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
DECLARE SUB TakeFont ()
DECLARE SUB PrintCharXY (x%, y%, ASCII%, cv%)
DECLARE SUB PrintTextXY (x%, y%, Text$, cv%)
DECLARE SUB PrintMatrixXY (x%, y%, Matr() AS INTEGER, HorizR%, VertR%, HSpacing!, VSpacing!, cv%)
 
DIM SHARED Smb%(255, 15), TwoPOW%(7)
DIM M(10, 10) AS INTEGER, f%(10)
 
  SCREEN 13
  TakeFont
    LINE (0, 0)-(319, 199), 199, BF
  FOR i% = 25 TO 0 STEP -1
   PrintCharXY 0 + i% * 4, 20 + i% * 4, 65 + i%, 31 + (i% AND 15) + 1
  NEXT
 
  FOR iy% = 1 TO 10: FOR ix% = 1 TO 10: M(ix%, iy%) = RND * 10: NEXT: NEXT
  PrintTextXY 10, 10, "Proverka pechati matric!", 15
 
  PrintMatrixXY 90, 30, M(), 10, 10, 20, 10, 151
 
SUB PrintCharXY (x%, y%, ASCII%, cv%)
     FOR GY% = 0 TO 15
        FOR GX% = 0 TO 7
          IF (Smb%(ASCII%, GY%) AND TwoPOW%(GX%)) = TwoPOW%(GX%) THEN PSET (GX% + x%, GY% + y%), cv%
        NEXT
     NEXT
END SUB
 
SUB PrintMatrixXY (x%, y%, Matr() AS INTEGER, HorizR%, VertR%, HSpacing!, VSpacing!, cv%)
 DIM Zn$
  FOR iy% = 1 TO VertR%
     FOR ix% = 1 TO HorizR%
      Zn$ = STR$(Matr(ix%, iy%))
      PrintTextXY x% + ix% * HSpacing!, y% + iy% * VSpacing!, Zn$, cv%
     NEXT
  NEXT
END SUB
 
SUB PrintTextXY (x%, y%, Text$, cv%)
xn% = x%
IF Text$ = "" THEN EXIT SUB
  FOR xp% = 1 TO LEN(Text$)
    CH% = ASC(MID$(Text$, xp%, 1))
    PrintCharXY xn%, y%, CH%, cv%
    xn% = xn% + 8
  NEXT
END SUB
 
SUB TakeFont
  '  Таблица степеней двойки для скорости
  FOR i% = 0 TO 7: TwoPOW%(i%) = 2 ^ i%: NEXT
  '  Копируем побитно системный шрифт
  FOR i% = 0 TO 255
     LINE (0, 0)-(7, 15), 0, BF
     LOCATE 1, 1: PRINT CHR$(i%)
     FOR GY% = 0 TO 15
        ST% = 0
        FOR GX% = 0 TO 7
          IF POINT(GX%, GY%) = 15 THEN ST% = ST% + TwoPOW%(GX%)
        NEXT
        Smb%(i%, GY%) = ST%
     NEXT
  NEXT
END SUB
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.12.2010, 21:58
Помогаю со студенческими работами здесь

Построить заполненную матрицу
Построить заполненную матрицу по следующему закону: элементы отмеченные цифрами 1,2,3,4, заменить максимальными значениями соответствующих...

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

Вывести матрицу, заполненную рандомными числами
Нужно вывести двумерный массив, заполненный рандомными числами, а выводит массив, заполненный одним рандомным числом, как это исправить? ...

Сформировать матрицу n*m, заполненную случайными числами
Сформировать на экране матрицу n*m, заполненную случайными числами(используя функцию rnd).

Вывести на консоль квадратную матрицу, заполненную справа налево
нужно вывести вот такой двумерный массив: 6 5 4 3 2 1 12 11 10 9 8 7 18 17 16 15 14 13 24 23 22 21 20 19 30 29 28 27 26 25 36...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru