Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
| aly17_17 |
3.1.2009, 14:13
Сообщение
#1
|
|
Пользователь Группа: Пользователи Сообщений: 12 Регистрация: 3.1.2009 Пользователь №: 21 265 |
помогите пожалста решить задачку!!!!!!!!!!!!!!!!!!!!я решила,но не знаю правильно или нет......проверьте пожалуста!!!!исправьте ошибки!!!!заранее спасибо!!!!
Задача такая: Дана матрица A размером 5*7. Сформировать одномерный массив B размером 5 по следующему правилу: если первый элемент строки матрицы положительный, то в соответствующий элемент массива B поместить сумму элементов строки, расположенных после максимального элемента этой строки; в противном случае – 0. Вот моё решение: Dim a(5,7) , b(5) for i=1 to 5 for j=1 to 7 input a(i,j) , b(i) next j,i for i-=1 to 5 amax= -1000 for j=1 to 7 if a(i,j)>amax then amax=a(i,j) : jmax=j next j for i=1 to 5 for j=jmax+1 to 7 s=s+a(i,j) next j for i=1 to 5 for j=1 to 7 if a(i,1)>0 then b(i)=s else b(i)=0 next i for i=1 to 5 print b(i) next i |
| PolPoll |
3.1.2009, 17:30
Сообщение
#2
|
![]() :) Группа: Главные администраторы Сообщений: 5 858 Регистрация: 24.11.2005 Из: Москва Пользователь №: 5 327 |
Задача такая: Дана матрица A размером 5*7. Сформировать одномерный массив B размером 5 по следующему правилу: если первый элемент строки матрицы положительный, то в соответствующий элемент массива B поместить сумму элементов строки, расположенных после максимального элемента этой строки; в противном случае – 0. Код Dim a(5,7) , b(5) Примерно такfor i = 1 to 5 for j = 1 to 7 input a(i,j) next j next i for i = 1 to 5 if a(i,1)>0 then amax = a(i,1) jmax = 1 for j = 2 to 7 if a(i,j)>amax then amax=a(i,j) : jmax=j next j s = 0 for j = jmax+1 to 7 s = s + a(i,j) next j b(i) = s else b(i)=0 end if next i for i=1 to 5 print b(i) next i -------------------- |
| aly17_17 |
3.1.2009, 18:41
Сообщение
#3
|
|
Пользователь Группа: Пользователи Сообщений: 12 Регистрация: 3.1.2009 Пользователь №: 21 265 |
спасибо!!!!!
а почему вот тут не задано i ? s = 0 for j = jmax+1 to 7 s = s + a(i,j) next j |
| Denis |
3.1.2009, 18:53
Сообщение
#4
|
|
Пользователь Группа: Пользователи Сообщений: 1 081 Регистрация: 24.1.2005 Пользователь №: 1 933 |
aly17_17, потому, что этот цикл по j идет внутри цикла по i (строчка next i "ниже").
PolPoll, учтено ли, что макс. может быть в "конце" строчки? (синтаксиса васьки не знаю |
| PolPoll |
3.1.2009, 19:54
Сообщение
#5
|
![]() :) Группа: Главные администраторы Сообщений: 5 858 Регистрация: 24.11.2005 Из: Москва Пользователь №: 5 327 |
PolPoll, учтено ли, что макс. может быть в "конце" строчки? (синтаксиса васьки не знаю В цикле for условие проверяется в начале - и он может ни разу не выполнится а вот ввод b - был лишний... -------------------- |
| Denis |
3.1.2009, 21:17
Сообщение
#6
|
|
Пользователь Группа: Пользователи Сообщений: 1 081 Регистрация: 24.1.2005 Пользователь №: 1 933 |
Код В цикле for условие проверяется в начале - и он может ни разу не выполнится вот это и интересовало |
| aly17_17 |
4.1.2009, 15:42
Сообщение
#7
|
|
Пользователь Группа: Пользователи Сообщений: 12 Регистрация: 3.1.2009 Пользователь №: 21 265 |
а почему ввод b был лишний??
|
| Denis |
4.1.2009, 16:44
Сообщение
#8
|
|
Пользователь Группа: Пользователи Сообщений: 1 081 Регистрация: 24.1.2005 Пользователь №: 1 933 |
aly17_17 , потому, что заполнять b надо по определенному условию, которое дано, а он заполнялся в цикле по i (или j) по правилу: b[i]:=i; {b[j]:=j}
|
| aly17_17 |
6.1.2009, 15:18
Сообщение
#9
|
|
Пользователь Группа: Пользователи Сообщений: 12 Регистрация: 3.1.2009 Пользователь №: 21 265 |
помогите пожалуста ещё с одной задачкой.......чёт я не пойму как делать.....
Дана матрица A размером 10*5. Преобразовать матрицу следующим образом: заменить первый элемент столбца суммой элементов столбца, расположенных после максимального элемента, если максимальный элемент находится в первой половине столбца. В противном случае оставить столбец без изменения. вот как узнать находится элемент в 1-ой половине столбца или нет????вообще не понимаю эту задачу...((((((((((( |
| aly17_17 |
6.1.2009, 17:37
Сообщение
#10
|
|
Пользователь Группа: Пользователи Сообщений: 12 Регистрация: 3.1.2009 Пользователь №: 21 265 |
я вот написала........проверьте пожалуста!!!!
Dim a(10,5) for i=1 to 10 for j=1 to 5 input a(i,j) next j,i for i=1 to 10 amax=-1000 for j=1 to 5 if a(i,j)>amax then amax=a(i,j):imax=i next i for i=1 to 10 for j=1 to 5 if imax<=5 then for i=imax+1 to 10 s=0 for j=1 to 5 s=s+a(i,j) next i a(1,j)=s next j else exit for end if for i=1 to 10 for j=1 to 5 print a(i,j); next j next i Сообщение отредактировал aly17_17 - 6.1.2009, 18:36 |
| Denis |
6.1.2009, 18:42
Сообщение
#11
|
|
Пользователь Группа: Пользователи Сообщений: 1 081 Регистрация: 24.1.2005 Пользователь №: 1 933 |
мда... давай гадать, какое у тебя условие. говорю сразу, начальное условие дано неполностью/некорректно. пусть дана матрица А:
Код 1 2 3 4 5 7 1 1 7 1 1 1 1 7 1 1 1 1 1 1 1 1 1 1 1 - - - - - 1 1 1 1 1 1 1 1 1 1 1 7 1 1 1 1 1 1 1 1 1 1 7 1 1 тогда, что должно получиться? A' - первая строка "модифицированной" матрицы Код 8 2 3 (14 или 7) 9 7 1 1 7 1 1 1 1 7 1 1 1 1 1 1 1 1 1 1 1 - - - - - - - - - 1 1 1 1 1 1 1 1 1 1 1 7 1 1 1 1 1 1 1 1 1 1 7 1 1 PS все ИМХО |
| aly17_17 |
6.1.2009, 21:28
Сообщение
#12
|
|
Пользователь Группа: Пользователи Сообщений: 12 Регистрация: 3.1.2009 Пользователь №: 21 265 |
как некорректное?))))задали такую задачку.......не я условие придумала)))))))
|
| Denis |
7.1.2009, 9:31
Сообщение
#13
|
|
Пользователь Группа: Пользователи Сообщений: 1 081 Регистрация: 24.1.2005 Пользователь №: 1 933 |
Код Исход. матр. Результат 1 2 3 4 1 8 2 3 (14 или 7) (9 или 1) 7 1 1 7 1 7 1 1 7 1 1 1 1 7 1 1 1 1 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 1 1 1 1 1 - - - - - - - - - - - - - - - - - - 1 1 1 1 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 1 1 1 1 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 1 1 1 1 7 1 5 посмотри на пример. в четвертом столбце два элемента имеют максимальное значение (7). так после какого нужно считать сумму элементов: после (2;4) - получится 14 или после (3;4) - получится 7. а если будет так, что один из элементов, хранящих максимальное значение, будет в "верхней" части, а второй в "нижней" (смотри пятый столбец - элементы (5;5) и (6;5)). тогда как быть? Сообщение отредактировал Denis - 7.1.2009, 9:33 |
| aly17_17 |
7.1.2009, 10:10
Сообщение
#14
|
|
Пользователь Группа: Пользователи Сообщений: 12 Регистрация: 3.1.2009 Пользователь №: 21 265 |
максимальный индекс должен быть <=5 и тогда будет в первой половине столбца
|
| Denis |
7.1.2009, 11:18
Сообщение
#15
|
|
Пользователь Группа: Пользователи Сообщений: 1 081 Регистрация: 24.1.2005 Пользователь №: 1 933 |
aly17_17 , ты видимо мои посты ваще не читаешь. ну что же, я пытался помочь
|
| aly17_17 |
7.1.2009, 13:36
Сообщение
#16
|
|
Пользователь Группа: Пользователи Сообщений: 12 Регистрация: 3.1.2009 Пользователь №: 21 265 |
я просто не понимаю в чём проблема в условии...дали задачу,я пытаюсь решить,просто надо проверить прально или нет)))))
|
| aly17_17 |
7.1.2009, 18:29
Сообщение
#17
|
|
Пользователь Группа: Пользователи Сообщений: 12 Регистрация: 3.1.2009 Пользователь №: 21 265 |
откуда я знаю как быть!!)))))))я ж в этом практически не разбираюсь!думаешь почему я спрашиваю)))))))
|
| PolPoll |
8.1.2009, 10:55
Сообщение
#18
|
![]() :) Группа: Главные администраторы Сообщений: 5 858 Регистрация: 24.11.2005 Из: Москва Пользователь №: 5 327 |
Цитата Дана матрица A размером 10*5. Преобразовать матрицу следующим образом: заменить первый элемент столбца суммой элементов столбца, расположенных после максимального элемента, если максимальный элемент находится в первой половине столбца. В противном случае оставить столбец без изменения. Код ввод A for j=1 to 5 amax=a(1,j) imax = 1 for i=2 to 10 if a(i,j)>amax then amax=a(i,j):imax=i next i if imax<=5 then s=0 for i=imax+1 to 10 s=s+a(i,j) next i a(1,j)=s end if next j вывод A -------------------- |
| aly17_17 |
8.1.2009, 12:22
Сообщение
#19
|
|
Пользователь Группа: Пользователи Сообщений: 12 Регистрация: 3.1.2009 Пользователь №: 21 265 |
спасибо!!!!а после a(1,j)=s не надо писать else exit for ?там же написано что если max не находится в первой половине столбца,то оставить столбец без изменений
|
| PolPoll |
8.1.2009, 13:54
Сообщение
#20
|
![]() :) Группа: Главные администраторы Сообщений: 5 858 Регистрация: 24.11.2005 Из: Москва Пользователь №: 5 327 |
спасибо!!!!а после a(1,j)=s не надо писать else exit for ? там же написано что если max не находится в первой половине столбца,то оставить столбец без изменений -------------------- |
![]() ![]() |
|
Текстовая версия | Сейчас: 23.5.2012, 3:51 |