клоз тему,алло

avatar Aurora

414

12

Aurora

Пользователь

Регистрация: 03.11.2013

Сообщения: 532

Рейтинг: 585

Aurora

Регистрация: 03.11.2013

Сообщения: 532

Рейтинг: 585

Ребят,помогите с одним вопросом.
Дана действительная квадратная матрица порядка 12. Заменить нулями все её элементы, расположенные на глав-ной диагонали и выше неё.
я задаю размерность матрицы,через рандомайз задаю значения, по диагонали выходят все нули,А как сделать что бы были нули выше главной?
Спойлер:


INPUT "vvedite 12 ", n
DIM a(n, n)
RANDOMIZE TIMER
PRINT "ishodnaya matrica"
FOR i = 1 TO 12
FOR j = 1 TO 12
a(i, j) = INT(RND * 100) + 1
PRINT a(i, j);
NEXT
PRINT
NEXT
FOR i = 1 TO 12
a(i, i) = 0
NEXT
PRINT "novaya matrica"
FOR i = 1 TO 12
FOR j = 1 TO 12
PRINT a(i, j);
NEXT
PRINT
NEXT

Teabreaker

Пользователь

Регистрация: 13.10.2015

Сообщения: 153

Рейтинг: 245

Нарушения: 1000

Teabreaker

Регистрация: 13.10.2015

Сообщения: 153

Рейтинг: 245

Нарушения: 1000

Может быть так?
Спойлер:


Вместо

Aurora сказал(а):
FOR i = 1 TO 12
a(i, i) = 0
NEXT
Нажмите, чтобы раскрыть...


FOR i = 1 TO 12
FOR j = 1 TO i
a(i, j) = 0
NEXT

Aurora

Пользователь

Регистрация: 03.11.2013

Сообщения: 532

Рейтинг: 585

Aurora

Регистрация: 03.11.2013

Сообщения: 532

Рейтинг: 585

Пишет FOR WITHOUT NEXT.
Teabreaker сказал(а):
Может быть так?
Спойлер:


Вместо

FOR i = 1 TO 12
FOR j = 1 TO i
a(i, j) = 0
NEXT

Нажмите, чтобы раскрыть...

Teabreaker

Пользователь

Регистрация: 13.10.2015

Сообщения: 153

Рейтинг: 245

Нарушения: 1000

Teabreaker

Регистрация: 13.10.2015

Сообщения: 153

Рейтинг: 245

Нарушения: 1000

Aurora сказал(а):
Пишет FOR WITHOUT NEXT.
Нажмите, чтобы раскрыть...

Я qbasic первый раз вижу. Попробуй тогда
FOR i = 1 TO 12
FOR j = 1 TO i
a(i, j) = 0
NEXT
NEXT

lord_uppercode

Пользователь

Регистрация: 13.05.2016

Сообщения: 9

Рейтинг: 7

Нарушения: 1000

lord_uppercode

Регистрация: 13.05.2016

Сообщения: 9

Рейтинг: 7

Нарушения: 1000

if (i >= j) заменить значение. не думал о таком?

Aurora

Пользователь

Регистрация: 03.11.2013

Сообщения: 532

Рейтинг: 585

Aurora

Регистрация: 03.11.2013

Сообщения: 532

Рейтинг: 585

Teabreaker сказал(а):
Я qbasic первый раз вижу. Попробуй тогда
FOR i = 1 TO 12
FOR j = 1 TO i
a(i, j) = 0
NEXT
NEXT
Нажмите, чтобы раскрыть...

не,не робет
Спойлер:

2c2cc29eed44308ac071f879f48d9c28.png

Aurora

Пользователь

Регистрация: 03.11.2013

Сообщения: 532

Рейтинг: 585

Aurora

Регистрация: 03.11.2013

Сообщения: 532

Рейтинг: 585

lord_uppercode сказал(а):
if (i >= j) заменить значение. не думал о таком?
Нажмите, чтобы раскрыть...

конкретнее можно?

S0_HardCore

Пользователь

Регистрация: 01.07.2014

Сообщения: 3462

Рейтинг: 2905

S0_HardCore

Регистрация: 01.07.2014

Сообщения: 3462

Рейтинг: 2905

Aurora сказал(а):
конкретнее можно?
Нажмите, чтобы раскрыть...

FOR i = 1 TO 12
FOR j = 1 TO 12
IF i>j THEN



a(i, j) = 0
NEXT
NEXT
Так попробуй.

lord_uppercode

Пользователь

Регистрация: 13.05.2016

Сообщения: 9

Рейтинг: 7

Нарушения: 1000

lord_uppercode

Регистрация: 13.05.2016

Сообщения: 9

Рейтинг: 7

Нарушения: 1000

Aurora сказал(а):
конкретнее можно?
Нажмите, чтобы раскрыть...

i - строка, j - столбец. у всех элементов верхней половины матрицы значение столбца больше или равно значению строки
в цикле перебираешь матрицу полностью, по этому правилу узнаёшь в какой части матрицы элемент
S0_HardCore сказал(а):
FOR i = 1 TO 12
FOR j = 1 TO 12
IF i>j THEN


a(i, j) = 0
NEXT
NEXT
Так попробуй.
Нажмите, чтобы раскрыть...

не знай как в кубейсике, >= -такое условие можно сделать? тогда за один проход можно сделать

Teabreaker

Пользователь

Регистрация: 13.10.2015

Сообщения: 153

Рейтинг: 245

Нарушения: 1000

Teabreaker

Регистрация: 13.10.2015

Сообщения: 153

Рейтинг: 245

Нарушения: 1000

Aurora сказал(а):
не,не робет
Нажмите, чтобы раскрыть...

А теперь?
Спойлер:


INPUT "vvedite 12 ", n
DIM a(n, n)
RANDOMIZE TIMER
PRINT "ishodnaya matrica"
FOR i = 1 TO 12
FOR j = 1 TO 12
a(i, j) = INT(RND * 100) + 1
PRINT a(i, j);
NEXT
PRINT
NEXT
FOR i = 1 TO 12
FOR j = 1 TO i
a(j, i) = 0
NEXT
NEXT
PRINT "novaya matrica"
FOR i = 1 TO 12
FOR j = 1 TO 12
PRINT a(i, j);
NEXT
PRINT
NEXT

rida

Пользователь

Регистрация: 30.03.2016

Сообщения: 995

Рейтинг: 950

Нарушения: 1000

rida

Регистрация: 30.03.2016

Сообщения: 995

Рейтинг: 950

Нарушения: 1000

Хз как это на басике, но на С++ цикл будет такой:

for (int i=0; i {

for(int j=0; j {
}
}


учитывая, что у тебя массив почему-то не с 0, а с 1 то замени 0 на 1 и n на размерность.

Aurora

Пользователь

Регистрация: 03.11.2013

Сообщения: 532

Рейтинг: 585

Aurora

Регистрация: 03.11.2013

Сообщения: 532

Рейтинг: 585

Teabreaker сказал(а):
А теперь?
Спойлер:


INPUT "vvedite 12 ", n
DIM a(n, n)
RANDOMIZE TIMER
PRINT "ishodnaya matrica"
FOR i = 1 TO 12
FOR j = 1 TO 12
a(i, j) = INT(RND * 100) + 1
PRINT a(i, j);
NEXT
PRINT
NEXT
FOR i = 1 TO 12
FOR j = 1 TO i
a(j, i) = 0
NEXT
NEXT
PRINT "novaya matrica"
FOR i = 1 TO 12
FOR j = 1 TO 12
PRINT a(i, j);
NEXT
PRINT
NEXT

Нажмите, чтобы раскрыть...

Спасибо тебе,модер поиска. всегда знал что поиск илитка!

Темку клоз.

Удалено 226958

Пользователь

Регистрация: 13.05.2013

Сообщения: -3

Рейтинг: -14

Удалено 226958

Регистрация: 13.05.2013

Сообщения: -3

Рейтинг: -14

Закрыл по просьбе

Тема закрыта