samlab
Гость
|
|
« : 20-11-2010 21:33 » |
|
Прошу помочь нерадивому студенту еще разочек, если вас это не затруднит, конечно Dim i As Integer, j As Integer Dim a(7, 7) As Integer Dim Result As Single
Private Sub cmd1_Click()
Cls
k = Val(InputBox())
For i = 1 To 7 For j = 1 To 7 a(i, j) = ((-1) ^ (i + j)) * ((22 * Cos(i)) + (33 * Sin(j)) + (44 * Cos(k)))
Print a(i, j),
Next j
Print
Next i
End Sub
В коде вычисляется двумерный массив, когда вводишь с помощью inputbox значение k. Не могу разобраться, как вычислить наибольшее положительное cos (a(4,j)), то бишь косинус 4 строки начиная с 1 и до 7 столбца... Как вариант делал так For i = 1 To 7 For j = 1 To 7 a(i, j) = ((-1) ^ (i + j)) * ((22 * Cos(i)) + (33 * Sin(j)) + (44 * Cos(k)))
Print cos (a(4,j))
Next j
Next i
Но что то тут не то, по идее выводиться должно 7 раз, а не как у меня... И как вообще сравнивать числа? Заранее спасибо.
|
|
« Последнее редактирование: 20-11-2010 22:01 от samlab »
|
Записан
|
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #1 : 20-11-2010 21:37 » |
|
samlab, не уважаешь ты нас. Отформатируй код!
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
samlab
Гость
|
|
« Ответ #2 : 20-11-2010 21:59 » |
|
samlab, не уважаешь ты нас. Отформатируй код!
Отформатировал в первом посту, так должно быть?
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #3 : 20-11-2010 22:10 » |
|
For i = 1 To 7 For j = 1 To 7 a(i, j) = ((-1) ^ (i + j)) * ((22 * Cos(i)) + (33 * Sin(j)) + (44 * Cos(k))) Print cos (a(4,j)) Next j Next i
А так слабо?
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #4 : 20-11-2010 22:49 » |
|
1. Ввести дополнительную переменную для этого значения. Проинициализировать! Чем - подумай. 2. Цикл по j. Вычислить формулу и сравнить с переменной (см. п.1). Если значение формулы больше, присвоить переменной ее значение. 3. После цикла проверить, положительная ли переменная (см. функцию SIGN) и если да, то вывести ее.
Математика 5 класс...
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
samlab
Гость
|
|
« Ответ #5 : 20-11-2010 23:48 » |
|
For i = 1 To 7 For j = 1 To 7 a(i, j) = ((-1) ^ (i + j)) * ((22 * Cos(i)) + (33 * Sin(j)) + (44 * Cos(k))) Print cos (a(4,j)) Next j Next i
А так слабо? Слабо, давайте кидайтесь в меня гнилыми помидорами и тухлыми яйцами, я готов ко всему...
|
|
|
Записан
|
|
|
|
samlab
Гость
|
|
« Ответ #6 : 20-11-2010 23:49 » |
|
1. Ввести дополнительную переменную для этого значения. Проинициализировать! Чем - подумай. 2. Цикл по j. Вычислить формулу и сравнить с переменной (см. п.1). Если значение формулы больше, присвоить переменной ее значение. 3. После цикла проверить, положительная ли переменная (см. функцию SIGN) и если да, то вывести ее.
Математика 5 класс...
математику мы не любим с детства ибо преподаватель был тот еще фрукт, спасибо за подсказку, буду думать
|
|
|
Записан
|
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #7 : 21-11-2010 07:32 » |
|
samlab, извини, но это твои проблемы. Ты потихоньку скатываешься до уровня соседнего раздела - "Памагите".
Кстати, если ты не любишь две крайности - грамматику и математику, то чего же ты любишь?
|
|
« Последнее редактирование: 21-11-2010 07:34 от RXL »
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
samlab
Гость
|
|
« Ответ #8 : 22-11-2010 00:49 » |
|
samlab, извини, но это твои проблемы. Ты потихоньку скатываешься до уровня соседнего раздела - "Памагите".
Кстати, если ты не любишь две крайности - грамматику и математику, то чего же ты любишь?
Я и не перекладываю свои проблемы на Вас. По поводу соседнего раздела - разве я хнычу " памагите пажалуйста..., сессия горит, напишите за меня код..."? Я просто прошу помочь, но не навязываю себя. А по - поводу грамматики, вы немного путаете , по-моему - кислое с пресным, уважаемый RXL. Знай я, в каком виде нужно представить свой код на суд общественности, я бы так и сделал, не прекословя, вы же требуете от меня того, чего я не могу сделать, я по-просту не знаю - пишу код так, как удобно читать и понимать мне, я же не виноват в этом... Добавлено через 2 часа, 46 минут и 27 секунд:А по поводу кода, сам принцип мне ясен назначаешь за миниум первый элемент: MIN = M(1) или MIN = M(1, 1) для двумерного А потом в цикле сравниваешь. И если текущий элемент меньше - берёшь его за миниум Только из за этих внутренних и внешних циклов у меня каша в голове... For i = 4 To 4 For j = 1 To 7 a(i, j) = ((-1) ^ (i + j)) * ((22 * Cos(i)) + (33 * Sin(j)) + (44 * Cos(k))) l = cos (a(4,j)) Next Next
Правильно ли пока что тут?
|
|
« Последнее редактирование: 22-11-2010 03:37 от samlab »
|
Записан
|
|
|
|
Dusk
Команда клуба
Offline
Пол:
Редкий, но веселый вид
|
|
« Ответ #9 : 23-11-2010 14:09 » |
|
А по поводу кода, сам принцип мне ясен назначаешь за миниум первый элемент: MIN = M(1) или MIN = M(1, 1) для двумерного А потом в цикле сравниваешь. И если текущий элемент меньше - берёшь его за миниум Только из за этих внутренних и внешних циклов у меня каша в голове... For i = 4 To 4 For j = 1 To 7 a(i, j) = ((-1) ^ (i + j)) * ((22 * Cos(i)) + (33 * Sin(j)) + (44 * Cos(k))) l = cos (a(4,j)) Next Next
Правильно ли пока что тут? Для выявления минимального числа надо сделать: For i = 1 To 7 For j = 1 To 7 a(i, j) = ((-1) ^ (i + j)) * ((22 * Cos(i)) + (33 * Sin(j)) + (44 * Cos(k))) If i = 4 Then m = cos (a(i,j)) If j = 1 Then l = m Else If l > m then l = m End If End If Next Next
Скорее всего должно выглядеть где-то так, если я правильно понял задание. Разберись в том, что я написал. P.S. Точно не помню, и проверить негде, поддерживает ли VB конструкцию типа If l > m then l = m. Если не поддерживает - исправляй ошибку сам.
|
|
« Последнее редактирование: 23-11-2010 14:11 от Dusk »
|
Записан
|
Человек, сделавший хотя бы шаг к цели, сразу становится мишенью для всех отставших Опыт - это то, что появляется сразу после того, как он был так необходим... Бывают минуты, когда у тебя есть секунды, чтобы исправить деланное часами и не получить последствия на годы...
|
|
|
samlab
Гость
|
|
« Ответ #10 : 23-11-2010 19:36 » |
|
Спасибо, немного под себя подправил код ( нужно было сравнивать только положительные косинусы), а так все работает... Сейчас буду заниматься сортировкой массива, но уже сам, чтобы никого тут больше не доставать...
|
|
|
Записан
|
|
|
|
Dusk
Команда клуба
Offline
Пол:
Редкий, но веселый вид
|
|
« Ответ #11 : 24-11-2010 07:54 » |
|
samlab, тебе надо понять принцип работы вложенных циклов - без них сортировку тоже не сделаешь.
|
|
|
Записан
|
Человек, сделавший хотя бы шаг к цели, сразу становится мишенью для всех отставших Опыт - это то, что появляется сразу после того, как он был так необходим... Бывают минуты, когда у тебя есть секунды, чтобы исправить деланное часами и не получить последствия на годы...
|
|
|
samlab
Гость
|
|
« Ответ #12 : 25-11-2010 02:26 » |
|
Да тут и понимать нечего - один цикл идет по строкам, второй по столбцам, разве не так? Меня гнетет то, что мне нужно отсортировать фактически только одну строку (сортировка квадратов элементов 6 - го стобца), а как в одной строке найти столбцы... Dim I As Integer, J As Integer Dim a(7, 7) As Integer Dim my(7) As Integer
Private Sub cmd1_Click() Cls k = Val(InputBox("", "")) For I = 1 To 7 For J = 1 To 7 a(I, J) = ((-1) ^ (I + J)) * ((22 * Cos(I)) + (33 * Sin(J)) + (44 * Cos(k))) Print a(I, J), Next Print Next For I = 1 To 7 For J = 1 To 7 a(I, J) = ((-1) ^ (I + J)) * ((22 * Cos(I)) + (33 * Sin(J)) + (44 * Cos(k))) If I = 4 Then m = Cos(a(I, J)) If m > 0 Then If J = 1 Then l = m Else If l > m Then l = m End If End If End If Next Next Print "Min =" & Round(l, 5) For I = 1 To 7 J = 6 my(I) = ((-1) ^ (I + J)) * ((22 * Cos(I)) + (33 * Sin(J)) + (44 * Cos(k))) Print my(I) ^ 2 ' kak tyt ???' Next End Sub
Форматировать код не буду, ибо мне не понятны принципы всех этих мистических отступов, пробелов и т.п., уж не вините Столько методов смотрел, самый простой в реализации - пузырьковый, но там все для массивов, а мне надо отсортировать только 6 столбик, или я не правильно мыслю? updА я буду. Предупреждение, в противном случае тема будет удалена
|
|
« Последнее редактирование: 25-11-2010 08:25 от Sla »
|
Записан
|
|
|
|
Sla
|
|
« Ответ #13 : 25-11-2010 08:28 » |
|
samlab, т.е. ты считаешь, что нам здесь делать нефик, чтоб подстраиваться под твои хочу/не хочу
Не хочешь - не надо. Но в таком случае ЗДЕСЬ твоих постов не будет.
А ломать глаза из-за твоих непонятных принципов мне, лично, облом, и другим, наверное, тоже.
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #14 : 25-11-2010 13:14 » |
|
Форматировать код не буду, ибо мне не понятны принципы всех этих мистических отступов, пробелов и т.п., уж не вините Тут я со Sla согласен. Не умеешь - научим, не хочешь - заставим.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
samlab
Гость
|
|
« Ответ #15 : 25-11-2010 17:32 » |
|
samlab, т.е. ты считаешь, что нам здесь делать нефик, чтоб подстраиваться под твои хочу/не хочу
Не хочешь - не надо. Но в таком случае ЗДЕСЬ твоих постов не будет.
А ломать глаза из-за твоих непонятных принципов мне, лично, облом, и другим, наверное, тоже.
Ваше право, удаляйте тему...
|
|
|
Записан
|
|
|
|
|