198 / 10 / 3
Регистрация: 30.04.2016
Сообщений: 733
|
||||||
1 | ||||||
В массиве К(5, 5) заменить элементы, стоящие ниже главной диагонали нулями17.03.2017, 20:54. Показов 1137. Ответов 7
Метки нет (Все метки)
15 0 15 16 14 0 8 17 15 4 19 17 1 18 7 10 15 1 11 4 0 0 0 0 0 Похоже, задачка мудрёная. Попробовал нулей пробных нарисовать. Но ведь это не то. Должен нижний треугольник массива по диагонали превратиться в нули. У вас – то должно получиться.
0
|
17.03.2017, 20:54 | |
Ответы с готовыми решениями:
7
Заменить нулями все элементы матрицы, расположенные ниже главной диагонали В матрице все отрицательные элементы, стоящие на главной диагонали и ниже ее, заменить нулями Замените элементы стоящие ниже главной диагонали нулями Дана матрица А(п*п). Заменить элементы главной диагонали нулями, а элемен-ты, стоящие над главной диагональю - единицами |
18.03.2017, 09:12 | 2 | |||||||||||||||
Petro29
В программе есть ошибка 1. Строка 6 должна выглядеть так
Вариант 1 (стандартное решение)
Дело в том, что матрица, после ее объявления, по умолчанию заполнена нулями. Так зачем заполнять нулями элементы, расположенные ниже диагонали, когда надо просто заполнить случайными числами элементы, лежащие на диагонали и выше? Вот код. Решайте сами. Хорош он или нет?
0
|
Платежеспособный зверь
8956 / 4382 / 1649
Регистрация: 28.10.2009
Сообщений: 11,621
|
|
20.03.2017, 18:19 | 3 |
Это, увы, не так. Матрица после её объявления по умолчанию заполнена мусором, который вполне может быть нулями, а может быть и нет...
в учебнике об этом говорится следующее: Если переменной величине не присвоено никакого значения (или не введено), то она является неопределенной. Иначе говоря, ничего нельзя сказать, какое значение имеет эта переменная.
1
|
Платежеспособный зверь
8956 / 4382 / 1649
Регистрация: 28.10.2009
Сообщений: 11,621
|
|
20.03.2017, 19:49 | 5 |
Да, этого будет достаточно, но всё равно назвать это решением нельзя потому, что не выполнено требование заменить элементы
1
|
20.03.2017, 20:00 | 6 |
кот Бегемот
Я восхищен вашей логикой!!! Действительно, если нужна ЗАМЕНА, то это должно быть сделано явно. Но есть одно НО. Если элементы равны, то заменить один элемент на равный ему другой уже не требует явных действий... (!!) Или я что-то плохо понимаю в в элементарной логике?
0
|
198 / 10 / 3
Регистрация: 30.04.2016
Сообщений: 733
|
||||||
31.03.2017, 20:44 [ТС] | 7 | |||||
К заданию 278 о замене элементов массива ниже главной диагонали нулями.
Ответ получен. Всё получилось. А вот для общего развития возникли вопросы: 1) Что за две строки «NEXT: PRINT» в 1-м цикле и одна строка в 3-м цикле. Что они означают и откуда они взялись? (В книге у Тимофеевской про них ничего не обнаружено). 2) С «USINGом» понятно (вы давали про него ответ). 3) А вот с условием «IF i > j THEN X(i, j) = 0 “ пока не понятен смысл этого условия. Как то пояснить можно это условие. Ну и последнее: прилагаю отредактированную программу с заменой непонятных двойных NEXT: PRINT на операторы LOCATE. Получилось (хотя и не сразу). И удалил END – зачем он, ведь без него программа работает. И удалил 2-й цикл в Вар. 1 (нестандартное решение). Отредактированная программа:
12 2 15 14 3 13 12 3 18 3 3 8 10 18 15 8 8 14 18 9 7 14 7 16 2 12 2 15 14 3 0 12 3 18 3 0 0 10 18 15 0 0 0 18 9 0 0 0 0 2 Ну как, нормально. C «LOCATEом» стало понятно. (А поменяв знак > на < , получим нули выше диагонали).
1
|
01.04.2017, 09:55 | 8 |
Ответ на первый вопрос (NEXT: PRINT)
1. В QBasic можно записать в одной строке несколько операторов. Их надо только разделять двоеточием. Пример. x = 3: y = 4: z = 5. Число операторов не ограничено и они могут быть любыми 2. NEXT: PRINT - Эти два оператора записаны в одну строку можно записать их в две строки NEXT 3. Оператор PRINT в нашем случае ничего не вычисляет и не печатает. Он переводит запись на следующую строку. ... Ответ на следующий вопрос (IF i > j THEN X(i, j) = 0 ) 1. элементы главной диагонали имеют вид x(i, j) при i = j 2. для элементов выше главной диагонали должно выполняться неравенство i < j 3. И наконец для элементов ниже главной диагонали. (это наш случай) i > j 4. условный оператор как раз и означает, что если i > j (элемент ниже главной диагонали), то ему присваивается число 0. ... О вашей программе 1. пишите правильно RANDOMIZE TIMER 2. LOCATE i * 1, j * 4 => LOCATE i, j * 4 (зачем умножать на 1?) 3. применяя LOCATE оператор USING можно не использовать LOCATE ведь тоже выравнивает запись... Посмотрите сами!!! и сравните! ... примечание Вы начали уже сами разбираться в программах и в QBasic'e похвально...
0
|
01.04.2017, 09:55 | |
01.04.2017, 09:55 | |
Помогаю со студенческими работами здесь
8
Заменить элементы главной диагонали матрицы нулями и найти максимальный элемент ниже побочной диагонали Заменить нулями элементы матрицы лежащие ниже главной диагонали В матрице В все элементы, стоящие ниже главной диагонали заменить на нуль В исходной матрице заменить нулями все элементы, стоящие на главной диагонали и выше нее Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |