Форум программистов, компьютерный форум, киберфорум
QBasic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
198 / 10 / 3
Регистрация: 30.04.2016
Сообщений: 732

Упорядочить строки по возрастанию элементов главной диагонали

12.11.2017, 11:02. Показов 1488. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
. В массивe R(5, 5) упорядочить строки по возрастанию элементов главной диагонали.
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
CLS
DIM X(5, 5)
FOR i = 1 TO 5
FOR j = 1 TO 5
  IF i = j  THEN
X(i, j) = INT(20 * RND(i))
   END IF
   LOCATE i * 2, j * 43
   PRINT X(i, j);
NEXT j, i
На выходе имеем:
QBasic/QuickBASIC
1
2
3
4
5
14   0    0   0   0
0    10   0   0   0
0     0   11  0   0
0     0    0   5   0
0     0    0   0   6
На вопрос о том – как это сделать, был дан один из ответов в виде текста.
Вот он: «вам нужно задать один массив – “диагональ”. Вот его и “сорти-
руйте”… Когда надо переставлять элементы диагонали, то переставляйте
элементы соответствующих строк”.
1. А как задать то этот массив. Числа то неизвестны. Если через I, j – то как?
2. И как это переставлять элементы соответствующих строк?
Кто бы это всё изобразил.
В ответах было предложено три программы. Вот одна из них:
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
CLS
RANDOMIZE TIMER
DIM X(5, 5), d(5)
  FOR i = 1 TO 5
     FOR j = 1 TO 5
    X(I, j) = INT(90 * RND)
     IF i = j THEN d(i_ = X(i, j)
     PRINT USING “####”; X(i, j);
    NEXT: PRINT
    NEXT: PRINT
   FOR i = 1 TO 4
     FOR j = i + 1 TO 5
     IF d(i) > d(j) THEN
         FOR k = 1 TO 5
       SWAP X(I, k), X(j, k)
       NEXT k
       SWAP d(i), d(j)
          END IF
        NEXT j, i
      FOR I = 1 TO 5
      FOR j = 1 TO 5
PRINT USING “####”; X(I, j);
NEXT: PRINT
NEXT
На выходе имеем:
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
73   72   85   59   65
75   66   73   84   41
41   12   65     4     1
69   20   52   47   10
72   24   42   52   72
 
69   20   52   47   10  
41   12   65     4     1
75   66   73   84   41
72   24   42   52   72
73   72   85   59   65
И что это? Где главная диагональ и где её сортировка? Ещё две программы были. А результат всё тот же. Одна из программ на 50 строк, поэтому не печатаю её (да ещё с таким началом:
DEFINT A-Z
OPTION BASE
и только после этого CLS и т. д. Это что за вводные слова? Короче, от трёх программ нужного результата не получилось.
То есть, была демонстрация программ! А хотелось получить нужный результат!
А ведь на некоторые вопросы были толковые ответы, даже с пояснением.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.11.2017, 11:02
Ответы с готовыми решениями:

Упорядочить строки по возрастанию элементов главной диагонали
. В массивe R(5, 5) упорядочить строки по возрастанию элементов главной диагонали. CLS DIM X(5, 5) FOR i = 1 TO 5 FOR j = 1 TO 5...

Упорядочить строки по возрастанию элементов главной диагонали
В массивe R(5, 5) упорядочить строки по возрастанию элементов главной диагонали. CLS DIM X(5, 5) FOR i = 1 TO 5 FOR j = 1 TO 5 ...

Упорядочить строки по убыванию элементов главной диагонали
В массивe R(5, 5) упорядочить строки по убыванию элементов главной диагонали. CLS DIM X(5, 5) FOR i = 1 TO 5 FOR j = 1 TO 5 ...

8
Платежеспособный зверь
 Аватар для кот Бегемот
8966 / 4389 / 1655
Регистрация: 28.10.2009
Сообщений: 11,647
12.11.2017, 15:37
Просто вместе с сортировкой элементов главной диагонали (то есть с обменом местами элементов) надо менять местами и остальные элементы строк. Это просто. Цикл по элементам строки.
0
198 / 10 / 3
Регистрация: 30.04.2016
Сообщений: 732
24.12.2017, 10:50  [ТС]
В массивe R(5, 5) упорядочить строки по возрастанию элементов главной диагонали.
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
CLS
DIM X(5, 5)
FOR i = 1 TO 5
FOR j = 1 TO 5
  IF i = j  THEN
X(i, j) = INT(20 * RND(i))
   END IF
   LOCATE i * 2, j * 43
   PRINT X(i, j);
NEXT j, i
На выходе имеем: А должно быть так:
QBasic/QuickBASIC
1
2
3
4
5
14   0    0   0   0                 14    0     0    0   0
0    10   0   0   0                   0   11    0    0   0
0     0   11  0   0                   0     0   10   0   0
0     0    0   5   0                   0     0     0    6   0
0     0    0   0   6                   0     0     0    0   5
На вопрос о том – как это сделать, был дан один из ответов в виде текста.
Вот он: «вам нужно задать один массив – “диагональ”. Вот его и “сорти-
руйте”… Когда надо переставлять элементы диагонали, то переставляйте
элементы соответствующих строк”.

А вот одна из предложенных программ:
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
CLS
RANDOMIZE TIMER
DIM X(5, 5), d(5)
  FOR i = 1 TO 5
     FOR j = 1 TO 5
  X(i, j) = INT(90 * RND)
IF i = j THEN d(i) = X(i, j)
PRINT USING “####”; X(i, j);
NEXT: PRINT
NEXT: PRINT
   FOR i = 1 TO 4
     FOR j = I + 1 TO 5
     IF d(i) > d(j) THEN
     FOR k = 1 TO 5
  SWAP X(i, k), X(j, k)
    NEXT k
  SWAP d(i), d(j)
   END IF
NEXT j, i
  FOR i = 1 TO 5
  FOR j = 1 TO 5
PRINT USING “####”; X(i, j);
  NEXTL PRINT
  NEXT
На выходе имеем:
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
73   72   85   59   65
75   66   73   84   41
41   12   65     4     1
69   20   52   47   10
72   24   42   52   72
 
69   20   52   47   10
41   12   65     4     1
75   66   73   84   41
72   24   42   52   72
73   72   85   59   65
И что это? Бессистемная перестановка строк.
Ни попарно: 1-я строка со 2-й, 3-я с 4-й и т. д.,
ни перестановка 1-й строки с последней, 2-й с предпоследней,
и так далее.
А где же главная диагональ и её сортировка?
0
11 / 11 / 24
Регистрация: 12.12.2017
Сообщений: 131
Записей в блоге: 2
24.12.2017, 14:29
Petro29
Давайте рассмотрим простой пример
7 4 3
9 1 6
0 5 3
Нам нужно сделать чтобы диагональ имела вид
1 _ _
_ 3 _
_ _ 7
Но обратите внимание на число 1. Оно из второго столбца перешло в
первый. Иными словами вы не получите изначальную строку 9 1 6.
Ведь теперь число 1 будет на первом месте. То есть строка будет
выглядеть как то так 1_ _ . Понимаете, это не просто перестановка строк.
Строки меняются!!! И от этого никуда не денешься.
0
198 / 10 / 3
Регистрация: 30.04.2016
Сообщений: 732
28.01.2018, 15:52  [ТС]
. В массивe R(5, 5) упорядочить строки по возрастанию элементов главной диагонали.
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
CLS
DIM X(5, 5)
FOR i = 1 TO 5
FOR j = 1 TO 5
  IF i = j  THEN
X(i, j) = INT(20 * RND(i))
   END IF
   LOCATE i * 2, j * 43
   PRINT X(i, j);
NEXT j, i
На выходе имеем: А должно быть так:
QBasic/QuickBASIC
1
2
3
4
5
14   0    0   0   0                 14    0     0    0   0
0    10   0   0   0                   0   11    0    0   0
0     0   11  0   0                   0     0   10   0   0
0     0    0   5   0                   0     0     0    6   0
0     0    0   0   6                   0     0     0    0   5
На вопрос о том – как это сделать, был дан один из ответов в виде текста.
Вот он: «вам нужно задать один массив – “диагональ”. Вот его и “сорти-
руйте”… Когда надо переставлять элементы диагонали, то переставляйте
элементы соответствующих строк”.

А вот одна из предложенных программ:
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
CLS
RANDOMIZE TIMER
DIM X(5, 5), d(5)
  FOR i = 1 TO 5
     FOR j = 1 TO 5
  X(i, j) = INT(90 * RND)
IF i = j THEN d(i) = X(i, j)
PRINT USING “####”; X(i, j);
NEXT: PRINT
NEXT: PRINT
   FOR i = 1 TO 4
     FOR j = I + 1 TO 5
     IF d(i) > d(j) THEN
     FOR k = 1 TO 5
  SWAP X(i, k), X(j, k)
    NEXT k
  SWAP d(i), d(j)
   END IF
NEXT j, i
  FOR i = 1 TO 5
  FOR j = 1 TO 5
PRINT USING “####”; X(i, j);
  NEXTL PRINT
  NEXT
На выходе имеем:
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
73   72   85   59   65
75   66   73   84   41
41   12   65     4     1
69   20   52   47   10
72   24   42   52   72
 
69   20   52   47   10
41   12   65     4     1
75   66   73   84   41
72   24   42   52   72
73   72   85   59   65
И что это? А где же главная диагональ
и где её сортировка?
0
Платежеспособный зверь
 Аватар для кот Бегемот
8966 / 4389 / 1655
Регистрация: 28.10.2009
Сообщений: 11,647
28.01.2018, 18:33
Petro29, что Вы по 100 раз одно и то же пишите? Напишите коротко и ясно, что вам надо и перестаньте засорять тему
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
29.01.2018, 21:56
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
FOR i=1 TO 4
  FOR j=i+1 TO 5
    IF a(i,i)>a(j,j) THEN
      FOR k=1 TO 5
        SWAP a(i,k),a(j,k)
      NEXT k
    END IF
NEXT j,i
Добавлено через 20 минут
Или
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
FOR i=1 TO 4
  k=i
  FOR j=i+1 TO 5
    IF a(j,j)<a(k,k) THEN k=j
  NEXT j
  IF i<>k THEN
    FOR j=1 TO 5
      SWAP a(i,j),a(k,j)
    NEXT j
  END IF
NEXT i
Или любая сортировка a(j,j) с обменом строк вместо одного элемента.
0
198 / 10 / 3
Регистрация: 30.04.2016
Сообщений: 732
11.02.2018, 16:31  [ТС]
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
CLS
DIM X(5, 5)
FOR i = 1 TO 5
FOR j = 1 TO 5
  IF i = j  THEN
X(i, j) = INT(20 * RND(i))
   END IF
   LOCATE i * 2, j * 43
   PRINT X(i, j);
NEXT j, i
QBasic/QuickBASIC
1
2
3
4
5
6
На выходе имеем:         Должно быть так:
14   0    0   0   0              14    0     0   0   0
0    10   0   0   0                0   11    0   0   0
0     0   11  0   0                0     0   10   0   0
0     0    0   5   0                0     0     0   6   0
0     0    0   0   6                0     0     0   0   5
Пишу не 101 раз, а коротко и ясно: Пока после нескольких ответов должный результат не получен.
Вот ещё одна попытка.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
11.02.2018, 18:47
Задача с подвохом: в общем случае строки по элементам главной диагонали упорядочить нельзя -- смена положения строки влечет изменение элемента, который встанет на главную диагональ

Кроме того, что делать в такой ситуации, как должен выглядеть "упорядоченный" массив?
Code
1
2
3
0 2 1
2 3 0
1 2 1
Добавлено через 7 минут
Выбирайте:
Code
1
2
3
0 2 1    2 3 0    2 3 0    1 2 1    1 2 1
1 2 1    0 2 1    1 2 1    0 2 1    2 3 0
2 3 0    1 2 1    0 2 1    2 3 0    0 2 1
Добавлено через 4 минуты
Если ответ в котором главная диагональ не упорядочена
Code
1
2
3
0 2 1
1 2 1
2 3 0
но в котором строки упорядочены по элементам главной диагонали исходного массива (0, 3, 1), почему-то не устраивает, то уточняйте условие задачи, особое внимание обратите на то, почему бы главной диагонали нужно было оказаться упорядоченной...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.02.2018, 18:47
Помогаю со студенческими работами здесь

Упорядочить строки матрицы по убыванию элементов главной диагонали
В массивe R(5, 5) упорядочить строки по убыванию элементов главной диагонали. (уточнять условие не к чему: задача взята из Интернета....

Упорядочить строки матрицы по возрастанию значений элементов ее главной диагонали методом обмена.
Упорядочить строки матрицы по возрастанию значений элементов ее главной диагонали методом обмена. Может кто-то помочь ?

Упорядочить строки матрицы в порядке возрастания элементов главной диагонали
Упорядочить строки матрицы m * n в порядке возрастания элементов в главной диагонали. Матрица вводится и выводится в главной программе....

Упорядочить элементы на главной диагонали по возрастанию
Дана квадратная матрица целых чисел. Упорядочить элементы на главной диагонали по возрастанию

Упорядочить по возрастанию элементы, расположенные на главной диагонали
Дан двумерный массив размера NxN. Упорядочить по возрастанию элементы, расположенные на главной диагонали.


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка 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 и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru