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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.01.2013, 01:31   #1
WED
 
Регистрация: 27.11.2012
Сообщений: 5
По умолчанию Задача на двухмерный массив. QBASIC.

В массиве А(6,8) найти отрицательные элементы в каждой строке и разложить их в порядке возрастания в новый массив. Обе матрицы распечатать.
Начал немного, но как из найденных элементов новый массив сделать не понимаю. Хелп.
CLS
DIM a(6, 8)
PRINT
PRINT " ZADANNbIU MASSIV"
PRINT
FOR i = 1 TO 6
FOR j = 1 TO 8
a(i, j) = INT(RND * 300) - 200
PRINT USING " #####"; a(i, j);
NEXT j
PRINT
NEXT i
PRINT " POLUCH. MASSIV"
FOR i = 1 TO 6
FOR j = 1 TO 8
IF a(i, j) < 0 THEN
WED вне форума Ответить с цитированием
Старый 04.01.2013, 01:42   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Если я правильно понял условия задача, то:

не помню, допустимы ли динамические массивы в QBASIC (динамические, это такие, где Вы можете подсчитать число отрицательных элементов kNeg, а
потом написать
Код:
DIM b( kNeg )
если возможно, то тогда, я бы написал решение в два прохода:
Код:
kNeg = 0
FOR i = 1 TO 6
 FOR j = 1 TO 8
   IF a(i, j) < 0 THEN kNeg = kNeg + 1
 Next j
Next i

DIM B( kNeg)
indB := 0
FOR i = 1 TO 6
 FOR j = 1 TO 8
   IF a(i, j) < 0 THEN indB = indB + 1 : B(indB) = A(i,j) 
 Next j
Next i

теперь нужно отсортировать полученный массив B и задача решена.

Если динамических массивов в QBASIC нет (или есть желание обойтись заполнением массива в один проход по матрице), тогда достаточно объявить массив B размером 48, чтобы его гарантированно хватило даже в том случае, если все элементы исходной матрицы будут отрицательные.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.01.2013, 01:54   #3
WED
 
Регистрация: 27.11.2012
Сообщений: 5
По умолчанию

C динамическими массивами не знаком и нам их в принципе не показывали, значит без них как-то делать.
Вот мы нашли отрицательные элементы, как их в новый массив запихнуть?
WED вне форума Ответить с цитированием
Старый 04.01.2013, 02:06   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Вот мы нашли отрицательные элементы, как их в новый массив запихнуть?
Вы мой код не очень внимательно смотрели, да?

так:
Код:
DIM B( 48 )
indB = 0
FOR i = 1 TO 6
 FOR j = 1 TO 8
   IF a(i, j) < 0 THEN indB = indB + 1 : B(indB) = A(i,j) 
 Next j
Next i
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.01.2013, 13:06   #5
WED
 
Регистрация: 27.11.2012
Сообщений: 5
По умолчанию

Огромное спасибо, выручили
WED вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
двухмерный массив zoom-zoom Общие вопросы C/C++ 11 14.12.2012 16:26
Двухмерный массив Lev.F Помощь студентам 1 30.05.2010 21:31
двухмерный массив С++(задача) Monzo Помощь студентам 3 22.12.2008 16:19
двухмерный массив Enchantner Паскаль, Turbo Pascal, PascalABC.NET 3 22.04.2008 20:47
Двухмерный массив xtraSHAD0W Паскаль, Turbo Pascal, PascalABC.NET 2 22.04.2008 18:17