Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.68/25: Рейтинг темы: голосов - 25, средняя оценка - 4.68
2 / 2 / 0
Регистрация: 15.02.2012
Сообщений: 42

Найти сумму нечетных элементов главной диагонали матрицы

11.06.2012, 17:25. Показов 4950. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Необходимо найти сумму нечетных элементов матрицы,расположенных на главной диагонали,пробую что-то вроде:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Public Sub Counter_control_prg()
Dim a(1 To 500, 1 To 500) As Single
Dim I As Integer
Dim N As Integer
Dim J As Integer
Dim S As Single
 
N = InputBox("Размерность")
For i = 1 To N - 1
    For j = i + 1 To N
        If a(i, j) <> Round(a) Then
        S = S + a(i, j)
MsgBox S
Next j
Next i
End If
End Sub
Выдает: Next without For...хотя For я очень отчетливо вижу...что не так?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.06.2012, 17:25
Ответы с готовыми решениями:

Найти сумму положительных элементов на главной диагонали матрицы, и сумму элементов по столбцам
Задание вот такое: В данной действительной квадратной матрице порядка 5х5 найти сумму положительных элементов на главной диагонали и сумму...

Найти сумму элементов главной диагонали матрицы
Дана квадратная матрица A порядка M. Найти сумму элементов ее главной диагонали, то есть диагонали, содержащей следующие элементы: ...

Найти сумму элементов главной диагонали квадратной матрицы
дана квадратная матрица a порядка м. найти сумму элементов в главной диагонали

24
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,087
11.06.2012, 17:35
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Попробуй так:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Public Sub Counter_control_prg()
Dim a(1 To 500, 1 To 500) As Single
Dim I As Integer
Dim N As Integer
Dim J As Integer
Dim S As Single
 
N = InputBox("Размерность")
For i = 1 To N - 1
    For j = i + 1 To N
        If a(i, j) = Round(a) Then
            S = S + a(i, j)
        End If
    Next j
Next i
MsgBox S
End Sub
Кстати, если введенная размерность больше 500?

Добавлено через 3 минуты
Да и еще, а чем заполнен то массив?
1
призрак
 Аватар для ikki
3266 / 894 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
11.06.2012, 17:42
понятия "четный" и "нечетный" определены для натуральных чисел.
поэтому нет смысла задавать тип элементов матрицы Single
более того - думаю, что преподаватель посчитает это за ошибку.
советую поменять на Integer или Long

Round(a) из 11 строки кода по глупости счёл "новым словом" в программировании, только через пару секунд дошло, что автор вообще не понимает, что пишет.
ибо вложенные циклы тут тоже вообще не нужны.

правильно так:
Visual Basic
1
for i=1 to n: if a(i,i) mod 2 then s=s+a(i,i): next
0
2 / 2 / 0
Регистрация: 15.02.2012
Сообщений: 42
11.06.2012, 17:54  [ТС]
Ой как крутааааааа,спс.
0
призрак
 Аватар для ikki
3266 / 894 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
11.06.2012, 18:02
вложенные циклы могут понадобиться для другого - заполнения матрицы случайными числами
(хотя в задании это явно не сказано).
вполне возможно, что автор спутал Rnd() и Round()

тогда так (заполнение матрицы):
Visual Basic
1
for i=1 to n: for j=1 to n: a(i,j)=cint(rnd*100): next j: next i
а потом - приведенный выше код.
0
2 / 2 / 0
Регистрация: 15.02.2012
Сообщений: 42
11.06.2012, 18:04  [ТС]
Спутать random от round?)
Я конечно чайник в vba но вроде не на столько.)
0
призрак
 Аватар для ikki
3266 / 894 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
11.06.2012, 18:13
xrenomx, мда?

тогда сделайте одолжение - объясните, как нечайник:
где в вашем коде появляются, хоть каким-нибудь образом, значения в матрице?
и что означает Round(a), где a - двумерный массив?
и каким чудесным образом Вы проверяете элементы на нечетность?

мнение профессионала - это ж бесценно!
0
2 / 2 / 0
Регистрация: 15.02.2012
Сообщений: 42
11.06.2012, 18:20  [ТС]
Ладно,ладно чайник я - убедили...
0
призрак
 Аватар для ikki
3266 / 894 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
11.06.2012, 18:23
вот мой код целиком (без проверки на адекватность введенного числа строк/столбцов):

Visual Basic
1
2
3
4
5
6
7
8
9
10
sub x()
  dim i%, j%, n%, a%(), s&
  n=inputbox("введите N")
  redim a(1 to n, 1 to n)
  for i=1 to n: for j=1 to n: a(i,j)=cint(rnd*100): next j: next i
  for i=1 to n
    if a(i,i) mod 2 then s=s+a(i,i)
  next
  msgbox s
end sub
1
2 / 2 / 0
Регистрация: 15.02.2012
Сообщений: 42
11.06.2012, 18:45  [ТС]
Пытаюсь вывести количество нечетных элементов на главной диагонали:
добавил ниже
k = k + a(i, i)

Задаю размерность 2,пишет сумму, а ко-во: 3,что в принципе не возможно
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub x()
  Dim i%, j%, k%, n%, a%(), s&
  n = InputBox("ââåäèòå N")
  ReDim a(1 To n, 1 To n)
  For i = 1 To n
    For j = 1 To n
      a(i, j) = CInt(Rnd * 100)
    Next j
  Next i
  For i = 1 To n
    If a(i, i) Mod 2 Then s = s + a(i, i)
    k = k + a(i, i)
  Next
  MsgBox s
  MsgBox i
End Sub
0
призрак
 Аватар для ikki
3266 / 894 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
11.06.2012, 18:49
Visual Basic
12
If a(i, i) Mod 2 Then s = s + a(i, i): k = k + 1
0
2 / 2 / 0
Регистрация: 15.02.2012
Сообщений: 42
11.06.2012, 19:35  [ТС]
Все равно 3 пишет,при размерности 2.
0
призрак
 Аватар для ikki
3266 / 894 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
11.06.2012, 19:45
Visual Basic
16
MsgBox k
я всё могу понять, но чтобы высчитывать в программе значение одной переменной, а выводить в окно сообщений значение другой...

xrenomx, у меня к Вам большая просьба: в следующий раз, когда будете выкладывать свой код на форум, просите помогающих проверять каждый оператор, каждую строку и каждый символ. а то попадётся кто-нить такой же наивный, как я, верящий в человеческий разум - а неприятности будут у Вас.
0
2 / 2 / 0
Регистрация: 15.02.2012
Сообщений: 42
11.06.2012, 19:51  [ТС]
Ну да,я способен на такое...)
0
 Аватар для Апострофф
9908 / 3924 / 742
Регистрация: 11.10.2011
Сообщений: 5,904
11.06.2012, 20:08
Считаешь k(причем неправильно!), выводишь i
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
sub x()
  Dim i%, j%, k%, n%, a%(), s&
  n = InputBox("ââåäèòå N")
  ReDim a(1 To n, 1 To n)
  For i = 1 To n
    For j = 1 To n
      a(i, j) = CInt(Rnd * 100)
    Next j
  Next i
  k=0
  For i = 1 To n
    If a(i, i) Mod 2 Then
      s = s + a(i, i)
      k = k + 1
    endif
  Next
  MsgBox s
  MsgBox k
End Sub
1
2 / 2 / 0
Регистрация: 15.02.2012
Сообщений: 42
12.06.2012, 09:14  [ТС]
Дело в том,что размерность пользователь задает сам,следовательно элементы матрицы от этого он так же заполняет вручную,а не выбираются случайным образом?
Как это осуществить,учитывая что пользователь может ввести любую размерность(Ну давайте уж от 1 до 10)?

Добавлено через 13 минут
а не выбираются случайным образом.
Ошибся знаком.
0
призрак
 Аватар для ikki
3266 / 894 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
12.06.2012, 10:37
Цитата Сообщение от xrenomx Посмотреть сообщение
размерность пользователь задает сам,следовательно элементы матрицы от этого он так же заполняет вручную
не вижу причин для такого "следовательно".
зачет по предмету "логика" у вас тоже на форумах получен?
если вы "вручную" заправите бензобак своего автомобиля, то вы, следовательно, и колеса также вручную крутите?
0
2 / 2 / 0
Регистрация: 15.02.2012
Сообщений: 42
12.06.2012, 11:03  [ТС]
Такого предмета,как логика,у меня не было,видно не правда ли?))

P.S. не люблю такие вещи указывать,но если нечем помочь,тогда лучше вообще не пишите,разве что только для "апа" данной темы)
0
призрак
 Аватар для ikki
3266 / 894 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
12.06.2012, 11:25
в чем "помочь"?
за Вас, полностью, от начала до конца написали рабочий код, полностью решающий Вашу задачу из первого поста.
Вам полностью написали модификацию этого кода, решающую Вашу дополнительную задачу - ибо по частям Вы были воспринять эту модификацию не в состоянии.
теперь у Вас новая "хотелка". нелогичная, но, конечно, возможная. причём Вы не хотите зайти в три-четыре темы на форуме с решением задач "по матрицам" и наверняка найти там нужный Вам ответ.
а завтра ещё одна "хотелка" будет. а послезавтра - ещё одна.

одна тема - один вопрос. читайте Правила форума.
я считаю, что тема по вопросу из первого поста закрыта полностью.

ок, договорились - я в Вашей теме больше не присутствую.
0
2 / 2 / 0
Регистрация: 15.02.2012
Сообщений: 42
12.06.2012, 11:41  [ТС]
Просто задание было написано некорректно,поэтому пришлось узнавать должны быть случайные величины или их должны указывать,а не очередная моя "хотелка",мне по-Вашему заняться нечем?
Что касается темы:Сумма нечетных элементов матрицы главной диагонали полностью удовлетворяет моему вопросу,а заходить в "три-четрые темы" да еще и не факт что я смогу осуществить данную задачу -попросту нету времени.
"Дополнительной задачей" вы называете подсчет кол-ва нечетных элементов?Это даже не смешно...
И да,заметьте я не просил код с использованием rnd, Вы так сказать сами мне его "впарили".

я в Вашей теме больше не присутствую.
Ок.

Вопрос все еще открыт...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.06.2012, 11:41
Помогаю со студенческими работами здесь

Найти сумму положительных элементов, лежащие выше главной диагонали матрицы
Нуждаюсь в помощи, очень прошу помочь, нужно создать в UserForm Дана матрица размером n * n. Найти сумму положительных элементов, ...

В строках с отрицательным элементом матрицы на главной диагонали найти сумму элементов
Пусть дана вещественная квадратная матрица порядка п. В строках с отрицательным элементом на главной диагонали найдите: а) сумму...

Найти сумму всех положительных элементов матрицы, расположенных выше главной диагонали
Нужно найти сумму всех положительных элементов матрицы, расположенных выше главной диагонали. Sub main() Dim a(1 To 5, 1 To 5) As...

Найти сумму элементов на побочной диагонали и сумму элементов ниже главной диагонали
я запутался. нашёл сумму выше главной диагонали (ошибочно, нужно ниже), а с суммой на побочной не могу разобраться даже Sub hhhhh() ...

Найти среднее арифметическое элементов главной диагонали матрицы
Задана квадратная матрица A, состоящая из целочисленных элементов. Найти среднее арифметическое элементов главной диагонали матрицы. c...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru