|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
06.03.2010, 17:17 | #1 |
Пользователь
Регистрация: 27.11.2009
Сообщений: 31
|
Вычисление сумм элементов матрицы А размера n x n, лежащих выше, ниже и на главной диагонали
Здравствуйте, уважаемые господа программисты!
Помогите найти ошибку в задаче Необходимо составить программу вычисления сумм элементов матрицы А размера n x n, лежащих выше, ниже и на главной диагонали. Результат вычислений записать в одномерный массив. написала следующий код: Public Sub Var15() Dim A() As Double, B() As Double, n As Integer, i As Integer, j As Integer, q As Integer, w As Integer, d As Integer n = InputBox(" Введите размерность массива (n*n)") ReDim A(1 To n, 1 To n) ReDim B(1 To n) For i = 1 To n For j = 1 To n A(i, j) = InputBox(" Введите элемент A (" & i & "," & j & ")") Next j Next i q = 0 w = 0 d = 0 For i = 1 To n For j = 1 To n If i > j Then q = q + A(i, j) ElseIf i = j Then w = w + A(i, j) Else: d = d + A(i, j) End If Next j Selection.TypeText Text:=B(i) & vbCrLf Next i End Sub при запуске выдается ошибка Else without If |
07.03.2010, 07:07 | #2 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
Ошибка в том, что в условии If нельзя одновременно использовать ElseIf и Else. Только что-нибудь одно. В алгоритм не вникаю, попробуй использовать Select…Case:
Код:
Лучше день потерять — потом за пять минут долететь!©
|
07.03.2010, 16:39 | #3 | ||
Форумчанин
Регистрация: 17.07.2009
Сообщений: 519
|
Цитата:
Вот выдержка из HELP VBA Цитата:
Вот так синтаксической ошибки не будет. Код:
Последний раз редактировалось Aent; 07.03.2010 в 16:56. |
||
07.03.2010, 16:51 | #4 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
Ага, значит это я перепутал. В этом случае ошибка состоит в том, что выполняемое по условию действие записано в одной строке c Then, т.е. является однострочным.
Лучше день потерять — потом за пять минут долететь!©
|
12.03.2010, 19:35 | #5 |
Пользователь
Регистрация: 12.03.2010
Сообщений: 15
|
Если результат представляет собой три суммы, то одномерный массив должен быть определен как В(1 to 3). Если это так, то....
Public Sub Var15() Dim n, i, j, q, w, d As Integer n = InputBox(" Введите размерность массива (n*n)") ReDim A(n, n), B(1 To 3) As Double For i = 1 To n For j = 1 To n A(i, j) = InputBox(" Введите элемент A (" & i & "," & j & ")") Next j Next i q = 0 w = 0 d = 0 For i = 1 To n For j = 1 To n If i > j Then q = q + A(i, j) ElseIf i < j Then w = w + A(i, j) Else: d = d + A(i, j) End If Next j Next i B(1) = q B(2) = w B(3) = d Selection.TypeText Text:=q & vbCrLf Selection.TypeText Text:=w & vbCrLf Selection.TypeText Text:=d & vbCrLf End Sub
Alex
|
25.03.2010, 16:21 | #6 |
Форумчанин
Регистрация: 24.03.2010
Сообщений: 349
|
Вообще, ошибка в том, что люди зачем-то экономят строки. Ну нельзя так! Для чего-то ведь придумали ВЫДЕЛЯТЬ структуру программы. Недаром в Бейсик вставили "странный" оператор Option Explicit - тоже для структурирования
Нет нерешаемых задач - есть недостаток времени и данных!
|
25.03.2010, 18:07 | #7 | |
Особый статус
Участник клуба
Регистрация: 24.11.2008
Сообщений: 1,535
|
Цитата:
Код:
Яснее на порядок, не так ли? По условию задачи (о чём неустанно напоминает Alex-roz) B(1) = q B(2) = w B(3) = d Это, конечно, разработчиками «варианта 15» притянуто за уши, но уж как задали, так честный программист и выдаёт! Улыбаясь в душе.
Формула 1 (календарь чемпионата-2016): 26.11.2016 15:55 — Абу-Даби: http://ru.wikipedia.org/wiki/Гран-при_Абу-Даби — (квалификация)! Эфир: http://lion-tv.com/28-match-tv.html
Последний раз редактировалось Sasha_Smirnov; 26.03.2010 в 17:28. Причина: подредактировал. |
|
26.03.2010, 12:48 | #8 | |
Особый статус
Участник клуба
Регистрация: 24.11.2008
Сообщений: 1,535
|
Цитата:
Инструкция PHP код:
(Предоставляю первому кто прочтёт — продолжить мысль.)
Формула 1 (календарь чемпионата-2016): 26.11.2016 15:55 — Абу-Даби: http://ru.wikipedia.org/wiki/Гран-при_Абу-Даби — (квалификация)! Эфир: http://lion-tv.com/28-match-tv.html
Последний раз редактировалось Sasha_Smirnov; 26.03.2010 в 17:27. |
|
04.04.2010, 20:18 | #9 |
Особый статус
Участник клуба
Регистрация: 24.11.2008
Сообщений: 1,535
|
Хорошо темперированный клавир (код VBA)
Код:
Формула 1 (календарь чемпионата-2016): 26.11.2016 15:55 — Абу-Даби: http://ru.wikipedia.org/wiki/Гран-при_Абу-Даби — (квалификация)! Эфир: http://lion-tv.com/28-match-tv.html
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
[Pascal] найти сумму элементов лежащих ниже побочной диагонали | Рамик | Помощь студентам | 12 | 28.03.2011 22:53 |
в сглаженой матрице найти сумму модулей элементов расположенных ниже главной диагонали | Sergeo_89 | Паскаль, Turbo Pascal, PascalABC.NET | 8 | 07.12.2010 00:02 |
Вычислить сумму элементов матрицы, расположенные на главной диагонали и выше нее | MariyaVo | Паскаль, Turbo Pascal, PascalABC.NET | 9 | 10.05.2009 21:19 |
Найти сумму парных элементов матрицы v[4][4].Расположенных ниже главной диагонали. | Black_Angel91 | Помощь студентам | 11 | 21.04.2009 20:51 |
произведение всех элементов, расположенных на главной диагонали и выше ее матрицы размером 4х4, Pascal | __FIRST__ | Помощь студентам | 2 | 12.12.2008 02:43 |