Debo sumar los elementos que se encuentren en una fila o columna impar de una matriz que está en un DataGridView.
Éste es el código que llevo:
Dim i, j As Integer
Dim tabla(5, 5) As String
'Pedir valores
With DataGridView1
.Columns.Add("", "")
.Columns.Add("", "")
.Columns.Add("", "")
.Columns.Add("", "")
.Columns.Add("", "")
.RowCount = 5
For i = 0 To 4
For j = 0 To 4
tabla(i, j) = InputBox("Digite un número")
.Item(i, j).Value = tabla(i, j)
Next
Next
End With
He hecho de todo pero no sé como sumar los elementos de una fila o columna impar.
Ayuda por favor !!! Se los agradezco de antemano
No se si te refieres a hacer esto:
Dim rowIndex As Integer = 0
Dim colIndex As Integer = 1
Dim sumRow As Integer = (From cell As DataGridViewCell
In DataGridView1.Rows(rowIndex).Cells
Select CInt(cell.Value)
).Sum
Dim sumCol As Integer = (From cell As DataGridViewCell
In DataGridView1.Rows.Item(colIndex).Cells
Select CInt(cell.Value)
).Sum
MsgBox(sumRow)
MsgBox(sumCol)
Saludos
Elektro, gracias por responder !!!
Lo he programado según tu ayuda pero me genera error:
en la línea
Select CInt (cell.Value)
genera que se espera fin de instrucción
y en la línea
MsgBox(sumRow)
sumRow me aparece sin declarar
No entiendo por qué
Cita de: MikeSky en 10 Diciembre 2014, 20:40 PM
genera que se espera fin de instrucción
No entiendo por qué
Es un error de sintaxis (por tu parte), como te indica se espera un final de instrucción, un cierre tras una apertura de paréntesis, ¡muestra el código!
EDITO: Ah, ya veo, dejaste un espacio en blanco en:
Cint (), aunque no se si ese será el único problema del código, muestralo si te sigue fallando.
¿Que versión de VisualStudio estás utilizando?, esos "descuidos" los debería resolver la IDE por si misma sin intervención tuya, a menos que estás utilizando una versión muy antigua quizás?.
Saludos!
Sii jeje ya me salió ... era un error mío !!!
Estoy usando Visual 2008 Express
En cuanto al código que me enviaste, funciona perfecto con las dos primeras filas ... pero como es una matriz de 5 lineas puedo cambiarlo para que solo funciones con las lineas 1, 3 y 5 ??
Cita de: MikeSky en 10 Diciembre 2014, 21:29 PMcomo es una matriz de 5 lineas puedo cambiarlo para que solo funciones con las lineas 1, 3 y 5 ??
Claro, crea un búcle que itere los índices para comprobar que índices son primos, y cuando encuentres uno, haces las sumas.
Con esta función puedes hacer la tarea de comprobar si un número es primo:
Citar ' Number Is Prime?
' ( By Elektro)
'
' Usage examples :
'
' MsgBox(NumberIsPrime(3)) ' Result: True
' MsgBox(NumberIsPrime(4)) ' Result: False
'
''' <summary>
''' Determines whether a numeric value is prime.
''' </summary>
''' <param name="Value">Indicates the numeric value.</param>
''' <returns><c>true</c> if value is prime, <c>false</c> otherwise.</returns>
Private Function NumberIsPrime(ByVal Value As Long,
Optional ByVal f As Long = 2L) As Boolean
If Value = f Then
Return True
ElseIf (Value Mod f = 0L Or Value = 1L) Then
Return False
Else
Return NumberIsPrime(Value, f + 1L)
End If
End Function
EDITO: Pseudo-código:
for x as integer = 0 to (rows.count -1)
if NumberIsPrime(x) then...
end if
next
Saludos!
Cita de: Eleкtro en 10 Diciembre 2014, 21:32 PM
Con esta función puedes hacer la tarea de comprobar si un número es primo:
Bueno no era lo que precisamente preguntaba, pero me sirve para otro proyecto que estoy haciendo. Jeje :)
A lo que me refiero es si puedo modificar el código que pusiste de manera que solo sume los elementos de la línea 1, la linea 3y la línea 5
ALGO COMO ESTO
F1 1 2 3 4 5 = 15
F2 6 7 8 9 5
F3 2 6 8 7 2 = 25
F4 1 2 3 4 5
F5 1 2 4 9 2 = 18
Cita de: MikeSky en 10 Diciembre 2014, 21:44 PM
Bueno no era lo que precisamente preguntaba, pero me sirve para otro proyecto que estoy haciendo. Jeje :)
A lo que me refiero es si puedo modificar el código que pusiste de manera que solo sume los elementos de la línea 1, la linea 3y la línea 5
ALGO COMO ESTO
F1 1 2 3 4 5 = 15
F2 6 7 8 9 5
F3 2 6 8 7 2 = 25
F4 1 2 3 4 5
F5 1 2 4 9 2 = 18
No se si quieres hacerlo directamente usando las dimensiones de la matriz, o usando las filas del GridView (y si es esto último entonces ya tienes el código hecho, solo debes adaptarlo a tus necesidades),
sea como sea ambas cosas se hacen de "igual" forma, ¿cual es el problema que encuentras?, muestra tus progresos y especifica donde estás atascado.
Saludos!
Muchas gracias Elektro. aquí comparte el código para sumar elementos de filas impares de una matriz en DataGridView
Dim i, j As Integer
Dim tabla(5, 5) As String
'Pedir valores
With DataGridView1
.Columns.Add("", "")
.Columns.Add("", "")
.Columns.Add("", "")
.Columns.Add("", "")
.Columns.Add("", "")
.RowCount = 5
For i = 0 To 4
For j = 0 To 4
tabla(i, j) = InputBox("Digite un número")
.Item(i, j).Value = tabla(i, j)
Next
Next
End With
'Filas impares
Dim fila1 As Integer = 0
Dim fila3 As Integer = 2
Dim fila5 As Integer = 4
Dim sumFila1 As Integer = (From cell As DataGridViewCell In DataGridView1.Rows(fila1).Cells Select CInt(cell.Value)).Sum
Dim sumFila3 As Integer = (From cell As DataGridViewCell In DataGridView1.Rows.Item(fila3).Cells Select CInt(cell.Value)).Sum
Dim sumFila5 As Integer = (From cell As DataGridViewCell In DataGridView1.Rows.Item(fila5).Cells Select CInt(cell.Value)).Sum
Label1.Visible = True
Label1.Text = "La suma de los valores de la primer fila es de " & sumFila1
Label3.Visible = True
Label3.Text = "La suma de los valores de la tercera fila es de " & sumFila3
Label5.Visible = True
Label5.Text = "La suma de los valores de la quinta fila es de " & sumFila5
HOLA, TENGO UN PROBLEMA, QUIERO SUMAR LAS COLUMNAS IMPARES, INTENTE REALIZAR COMO UDS LO A REALIZADO PERO AL SUMAR LA COLUMNA EL RESULTADO ES LE MISMO QUE EL DE LA FILAS
Cita de: CRIPLATA en 15 Diciembre 2014, 09:27 AM
HOLA, TENGO UN PROBLEMA, QUIERO SUMAR LAS COLUMNAS IMPARES, INTENTE REALIZAR COMO UDS LO A REALIZADO PERO AL SUMAR LA COLUMNA EL RESULTADO ES LE MISMO QUE EL DE LA FILAS
1) Lee las normas del foro, está prohibido abusar de las mayúsculas.
2) Crea un tema para formular tu pregunta, no invadas con preguntas un tema ajeno que ya está resuelto.
3) Da más detalles y sobre todo muestra el código. Es imposible ofrecerte ayuda con los datos que diste.
Tema cerrado