Форум программистов, компьютерный форум, киберфорум
QBasic
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
196 / 8 / 3
Регистрация: 30.04.2016
Сообщений: 733
1

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

12.11.2017, 11:02. Показов 910. Ответов 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
Заказывайте контрольные, курсовые и дипломы здесь.
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.11.2017, 11:02
Ответы с готовыми решениями:

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

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

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

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

8
Платежеспособный зверь
8737 / 4162 / 1604
Регистрация: 28.10.2009
Сообщений: 11,280
12.11.2017, 15:37 2
Просто вместе с сортировкой элементов главной диагонали (то есть с обменом местами элементов) надо менять местами и остальные элементы строк. Это просто. Цикл по элементам строки.
0
196 / 8 / 3
Регистрация: 30.04.2016
Сообщений: 733
24.12.2017, 10:50  [ТС] 3
В массив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
10 / 10 / 24
Регистрация: 12.12.2017
Сообщений: 131
Записей в блоге: 2
24.12.2017, 14:29 4
Petro29
Давайте рассмотрим простой пример
7 4 3
9 1 6
0 5 3
Нам нужно сделать чтобы диагональ имела вид
1 _ _
_ 3 _
_ _ 7
Но обратите внимание на число 1. Оно из второго столбца перешло в
первый. Иными словами вы не получите изначальную строку 9 1 6.
Ведь теперь число 1 будет на первом месте. То есть строка будет
выглядеть как то так 1_ _ . Понимаете, это не просто перестановка строк.
Строки меняются!!! И от этого никуда не денешься.
0
196 / 8 / 3
Регистрация: 30.04.2016
Сообщений: 733
28.01.2018, 15:52  [ТС] 5
. В массив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
Платежеспособный зверь
8737 / 4162 / 1604
Регистрация: 28.10.2009
Сообщений: 11,280
28.01.2018, 18:33 6
Petro29, что Вы по 100 раз одно и то же пишите? Напишите коротко и ясно, что вам надо и перестаньте засорять тему
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
5727 / 3436 / 2442
Регистрация: 22.11.2013
Сообщений: 9,652
Записей в блоге: 1
29.01.2018, 21:56 7
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
196 / 8 / 3
Регистрация: 30.04.2016
Сообщений: 733
11.02.2018, 16:31  [ТС] 8
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
5727 / 3436 / 2442
Регистрация: 22.11.2013
Сообщений: 9,652
Записей в блоге: 1
11.02.2018, 18:47 9
Задача с подвохом: в общем случае строки по элементам главной диагонали упорядочить нельзя -- смена положения строки влечет изменение элемента, который встанет на главную диагональ

Кроме того, что делать в такой ситуации, как должен выглядеть "упорядоченный" массив?
Код
0 2 1
2 3 0
1 2 1
Добавлено через 7 минут
Выбирайте:
Код
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 минуты
Если ответ в котором главная диагональ не упорядочена
Код
0 2 1
1 2 1
2 3 0
но в котором строки упорядочены по элементам главной диагонали исходного массива (0, 3, 1), почему-то не устраивает, то уточняйте условие задачи, особое внимание обратите на то, почему бы главной диагонали нужно было оказаться упорядоченной...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.02.2018, 18:47

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.