Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Другие языки > Помогите найти ошибку на qbasic


Автор: Trail 8.6.2012, 19:28
Всем привет. Ребят помогите найти ошибку в коде или подскажите как лучше решить.в qbasic первый раз программирую друг попросил решить несколько задачек.

Вот задача: Поиск в каждой строке массива максимального и минимального элемента.

Дело в том что при выходе из процедуры в переменных MIN и MAX записывались данные. 

Код

DECLARE SUB swp (b() AS INTEGER, n AS INTEGER, i AS INTEGER, min AS INTEGER, max AS INTEGER)
DIM a(1 TO 10, 1 TO 10) AS INTEGER
DIM i AS INTEGER, j AS INTEGER
'vvod matricu
CLS
PRINT "vvedite matricu:"
FOR i = 1 TO 3
FOR j = 1 TO 4
INPUT a(i, j)
NEXT j
NEXT i
CALL swp(a(), 4, 1, 0, 0)
CALL swp(a(), 4, 2, 0, 0)
CALL swp(a(), 4, 3, 0, 0)

CLS
PRINT "matrica posle"
FOR i = 1 TO 3
FOR j = 1 TO 4
PRINT a(i, j);
NEXT j
PRINT
NEXT i
PRINT i;
PRINT min;
PRINT max;
END

SUB swp (b() AS INTEGER, n AS INTEGER, i AS INTEGER, min AS INTEGER, max AS INTEGER)
DIM j AS INTEGER
min = b(1, 1)
max = b(1, 1)
FOR j = 1 TO n
IF b(i, j) > max THEN max = b(i, j)
NEXT j
FOR j = 1 TO n
IF b(i, j) < min THEN min = b(i, j)
NEXT j
END SUB



Автор: Trail 8.6.2012, 22:14
Решил. Пусть не так хорошо и для олимпиады не прокатит))) Тема закрыта.
Если кому интересно вот код.
Осталась еще одна задачка)
Код

DECLARE SUB swp (b() AS INTEGER, n AS INTEGER, i AS INTEGER, k AS INTEGER, m AS INTEGER)
DIM a(1 TO 10, 1 TO 10) AS INTEGER
DIM i AS INTEGER, j AS INTEGER
'vvod matricu
CLS
PRINT "vvedite matricu:"
FOR i = 1 TO 3
FOR j = 1 TO 4
INPUT a(i, j)
NEXT j
NEXT i
CALL swp(a(), 4, 1, 1, 6)
CALL swp(a(), 4, 2, 2, 6)
CALL swp(a(), 4, 3, 3, 6)
CLS
PRINT "matrica do"
FOR i = 1 TO 3
FOR j = 1 TO 4
PRINT a(i, j);
NEXT j
PRINT
NEXT i

PRINT "MAX MIN"
FOR i = 1 TO 3
FOR j = 6 TO 7
PRINT a(i, j);
NEXT j
PRINT
NEXT i
END

SUB swp (b() AS INTEGER, n AS INTEGER, i AS INTEGER, k AS INTEGER, m AS INTEGER)
DIM j AS INTEGER, k(1 TO 6) AS INTEGER
min = b(1, 1)
max = b(1, 1)
FOR j = 1 TO n
IF b(i, j) > max THEN max = b(i, j)
NEXT j
FOR j = 1 TO n
IF b(i, j) < min THEN min = b(i, j)
NEXT j

b(k, m) = max
m = m + 1
b(k, m) = min

END SUB


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)