Перейти к содержанию
Old Phone Forum
  • Вход

    Вы сейчас не залогинены на форуме.

    Для возможности комментариев, загрузки файлов, подписок на ответы - вам надо войти.

Рекомендуемые сообщения

Народ, помогите с задачей на Basic.

 

Нужно написать функцию нахождения в строке массива наибольшего элемента..

Подскажите что ли хотя бы как передать весь массив в функцию... или под функцию

С140, X100, X700, J210

Ссылка на комментарий
Поделиться на другие сайты

Homer,

сделай массив глобальным... :20:

 

Все всем спасибо ) сделал так

 

DEF FNmax (B)

SHARED a()

maxi = a(b, 1)

FOR j = 1 TO n

IF a(b, j) > maxi THEN maxi = a(b, j)

NEXT j

FNmax = maxi

END DEF

С140, X100, X700, J210

Ссылка на комментарий
Поделиться на другие сайты

Homer,

вот так получше буит:

 

DEF FNmax (B)

SHARED a()

maxi = 1

FOR j = 2 TO n

IF a(b, j) > a(b, maxi) THEN maxi =j

NEXT j

FNmax = a(b,maxi)

END DEF

 

:20:

  • Like 1
Ссылка на комментарий
Поделиться на другие сайты

Homer,

вот так получше буит:

:)

 

Почему? объясни если не сложно :az: Интерес

С140, X100, X700, J210

Ссылка на комментарий
Поделиться на другие сайты

Вообще задача звучит так

 

Даны две квадратные матрицы порядка N.

Получить новую матрицу умножением элементов каждой строки первой матрицы

на наибольшее из значений элементов соответствующей строки второй матрицы.

Написать и использовать функцию нахождения максимального элемента строки.

 

Я ее сделал так. Может что то не так ? Посоветуй те кто что знает :)

 

CLS

DEF FNmax (B)

SHARED a()

maxi = a(b, 1)

FOR j = 1 TO n

IF a(b, j) > maxi THEN maxi = a(b, j)

NEXT j

FNmax = maxi

END DEF

INPUT n

DIM a(n, n)

DIM c(n, n)

DIM d(n, n)

RANDOMIZE TIMER

FOR i = 1 TO n

FOR j = 1 TO n

a(i, j) = INT(RND * 15)

NEXT j

NEXT i

FOR i = 1 TO n

FOR j = 1 TO n

c(i, j) = INT(RND * 15)

NEXT j

NEXT i

PRINT "nasha matrica #1"

FOR i = 1 TO n

FOR j = 1 TO n

PRINT a(i, j);

NEXT j

PRINT

NEXT i

FOR i = 1 TO n

PRINT

b = i

maxchis = FNmax(B)

PRINT "max chislo"; i; "ryada="; maxchis

FOR j = 1 TO n

d(i, j) = c(i, j) * maxchis

NEXT j

NEXT i

PRINT

PRINT "Nasha matrica #2"

FOR i = 1 TO n

FOR j = 1 TO n

PRINT c(i, j);

NEXT j

PRINT

NEXT i

PRINT "Gotovaya matrica"

FOR i = 1 TO n

FOR j = 1 TO n

PRINT d(i, j);

NEXT j

PRINT

NEXT i

 

end

Изменено пользователем Homer

С140, X100, X700, J210

Ссылка на комментарий
Поделиться на другие сайты

Почему? объясни если не сложно Интерес

ну во-первых, у меня в цикле на одну итерацию меньше 8)

А почему лучше в maxi хранить индекс максимального значения, а не само значение - в общем, конкретно в этой проге выигрыша не даёт, а вообще - просто переменная maxi получается независима от содержимого массива и может быть типа Byte (один байт) при любом содержимом (при условии, конечно, что у тебя не более 255 элементов), а если у тебя массив будет содержать числа с точкой, то, в твоём случае переменную maxi надо тоже делать с точкой (4 или 8 байт) - выигрыш нескольких байт оперативки 8)

 

Может что то не так ? Посоветуй те кто что знает

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

Во-первых нужно определять переменные:

Dim maxi as byte, i a byte

Глобальная переменная

Public Dim A(1 to 15,1 to 15) as integer (примерно так, не помню уже...)

 

процедуры/функции определяй через блоки:

Function Max(b as byte)

...

end function

 

sub name(...)

...

end sub

 

благо, в кубейсике эти все возможности есть... :ad:

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


×
×
  • Создать...