Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2009, 18:30   #1
P0ZiTR0N
Новичок
Джуниор
 
Регистрация: 10.03.2009
Сообщений: 2
Вопрос Двумерный массив в QBasic

QBasic. Есть задача:
Организовать выведение двумерного массива a(6,6)
Найти:
1) сумму каждой строки
2) максимальный элемент каждой строки
3) сортировать каждую строку:
а) по возрастанию
б) по спаданию

из этого пункты 1 и 2 уже реализованы:
Код:
CLS
REM massive
DIM a(6, 6)
DATA 1,2,3,3,2,1
DATA 2,3,4,4,3,2
DATA 3,4,5,5,4,3
DATA 4,5,6,6,5,4
DATA 5,6,7,7,6,5
DATA 6,7,8,8,7,6
max = a(i, j)
sum = a(i, j)
FOR i = 1 TO 6
FOR j = 1 TO 6
READ a(i, j)
PRINT a(i, j); " ";
NEXT j
PRINT j
NEXT i

REM summa
FOR i = 1 TO 6
sum = 0
FOR j = 1 TO 6
sum = sum + a(i, j)
NEXT j
PRINT "summ #"; i; "="; sum
NEXT i

REM maximum
FOR i = 1 TO 6
FOR j = 1 TO 6
IF a(i, j) > max THEN max = a(i, j)
NEXT j
NEXT i
PRINT "maximum ="; max
Могу реализовать почти любую сортировку одномерного массива.. но загвоздка именно на двумерном - что ни пробывал - ни в какую...
Собственно вопрос стоит так - если кто-то то знает как это реализовать то или дайте мысль в каком-то алгоритмическом виде или выложите примерный кусочек кода
Заранее спасибо
P0ZiTR0N вне форума Ответить с цитированием
Старый 10.03.2009, 18:47   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
2) максимальный элемент каждой строки
У вас выводился только последний. Исправил.

Добавил сортировку выбором (по убыванию. Чтобы было по возрастанию, надо сменить знак на '<')

Код:
DIM i, j, k, t AS INTEGER
DIM sum AS INTEGER
CLS
REM massive
DIM a(6, 6) AS INTEGER
DATA 1,2,3,3,2,1
DATA 2,3,4,4,3,2
DATA 3,4,5,5,4,3
DATA 4,5,6,6,5,4
DATA 5,6,7,7,6,5
DATA 6,7,8,8,7,6

max = a(i, j)
sum = a(i, j)

FOR i = 1 TO 6
 FOR j = 1 TO 6
  READ a(i, j)
  PRINT a(i, j); " ";
 NEXT j
PRINT j
NEXT i

REM summa
FOR i = 1 TO 6
sum = 0
 FOR j = 1 TO 6
  sum = sum + a(i, j)
 NEXT j
PRINT USING "summ # = #"; i; sum
NEXT i

REM maximum
FOR i = 1 TO 6
 FOR j = 1 TO 6
  IF a(i, j) > max THEN max = a(i, j)
 NEXT j
PRINT USING "maximum # = #"; i; max
NEXT i

REM sort
FOR i = 1 TO 6

 FOR j = 1 TO 5
  t = j
  FOR k = j + 1 TO 6
   IF a(i, k) > a(i, t) THEN
    t = k
   END IF
  NEXT k
  sum = a(i, t)
  a(i, t) = a(i, j)
  a(i, j) = sum

 NEXT j

NEXT i

' print

FOR i = 1 TO 6
 FOR j = 1 TO 6
  PRINT USING "####"; a(i, j);
 NEXT j
 PRINT
NEXT i


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

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 10.03.2009, 18:53   #3
P0ZiTR0N
Новичок
Джуниор
 
Регистрация: 10.03.2009
Сообщений: 2
По умолчанию

аналогично и я потерялся.. вроде как диапазон от 1 до 6.. насчёт максимума упустил..
8 часов угробил на эту сортировку, а всё оказалось более чем просто...
А так - спасибо за оперативность. Тему можно закрывать
P0ZiTR0N вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
QBasic. Массив andronova Помощь студентам 9 24.02.2009 17:48
Массив в QBasic andronova Помощь студентам 5 18.02.2009 16:30
двумерный массив qbasic vinitar Помощь студентам 5 06.02.2009 15:51
Qbasic двумерный массив Raido Помощь студентам 8 02.02.2008 17:02
Двумерный массив [QBasic] conqueror Помощь студентам 2 20.01.2008 19:17