Ayudenme con este problema, q nose como se hace y ni lo entiendo

Iniciado por luix87, 24 Septiembre 2009, 06:07 AM

0 Miembros y 1 Visitante están viendo este tema.

luix87

Hola a todos los amigos que participan en este foro, quisiera que me ayudaran a explicarme este ejercicio ya que sinceramente nolo entiendo y nose que hacer especificamente, el ejercicio es el siguiente:

Dado dos vectores A y B de 15 elementos cada uno, obtener un vector C donde la posición i se almacene la suma de A+B y mostrar el mayor de los C.

Espero que me puedan ayudar amigos del Foro, les estare muy agradecidos

Atrum

Citar"Dado dos vectores A y B de 15 elementos cada uno"

Bueno dado que es el foro de programacion vamos a entender los vectores como arreglos unidimensionales, por ejempo:

A = { 2 , 7 , 3 , 2 , n... }
B = { 3 , 1 , 8 , 6 , n... }

Citar"obtener un vector C donde la posición i se almacene la suma de A+B"

Entonces A+B = C

Pos:    i=0      i=1     i=2      i=3      i= n ...
C = { 2 + 3 , 7 + 1 , 3 + 8 , 2 + 6 , n + n  ... }

En consecuencia:

C = { 5 , 8 ,12 , 8 , n ...}

Citar"y mostrar el mayor de los C."

Bueno esto esta algo incompleto, mi suposicion en que muestres el mayor de los elementos del vector C que en este caso seria 12

bueno espero te sirva y no haya ambigüedades con la forma en que interprete el texto de tu ejercicio

Ahora la pregunta seria, lo tienes que programar??, en que lenguaje  VB o C#??



Hadess_inf

No entiendo que parte no entendiste porque esta facilisimo.   ::) ::)

luix87

Fijate Xtriker que lo tengo que programar en vb.net, pero te agradezco mucho el que te hayas tomado el tiempo necesario para responder a mi duda surgida, porque como te habras dado cuenta soy un principiante y aunque para uds sea facil yo me quedo en la luna jaja pero te agradezco, ahora tratare de ver como le doy forma

Atrum

Ok amigo entonces si me permites sugerirte por donde empezar , primero investiga algo sobre los arreglos en VB, otra cosa que te hara este ejercicio mas facil es utilizar un ciclo For, y por ultimo pues los condicionales para obtener el numero mayor tendras que ir comparando cada posicion del arreglo dentro de otro ciclo y almacenarlo en alguna variable.

Aqui te pongo una referencia rapida:

Declarar un arreglo en VB

Código (vbnet) [Seleccionar]
Dim A as Integer() = { 2, 7, 3, 2}

ahora de acuerdo a lo que te puse arriba con respecto a las posiciones si utilizaramos la instruccion:

Código (vbnet) [Seleccionar]
Dim ElementoDeA as integer = A(1)

El dato guardado en la variable ElementoDeA seria 7 por que esta en la posicion 1 del arreglo A

Ciclo For

Código (vbnet) [Seleccionar]
For i = 0 to 15

Next


Aqui la variable "i" va a ir tomando valores desde 0 hasta 15, eso quiere decir que lo que este dentro de este ciclo se realizara 15 veces, imaginate que quisieras calcular el total de la suma de todos loa elementos del Vector A

Código (vbnet) [Seleccionar]
Dim total as integer =0
Dim i as integer
Dim A as Integer() = { 2, 7, 3, 2}

For i=0 to 3
total = A(i)
Next


Entonces de esta forma ya se quedaria el total de la suma 2+7+3+2  en la variable total entonces total tendria el valor de 14

espero eso te sirva de algo, cualquier otra duda aqui estamos  ;D




luix87

Hey Xtriker, como se haria este ejercicio en interfaz grafica en el .net, mi pregunta es como seria la interfaz grafica y a dond iria cada parte del codigo que me has proporcionado, te dejare mi correo para que nos pongamos en comunicacion: lega2004@hotmail.com

Hadess_inf

Hombre, es diseño ¡¡¡¡ ahora que no puedas hacer eso .... daria mucho que pensar ...  :-X :-X :-X

luix87

Me puedes enviar el codigo de este ejercicio parte por parte, si no es tanta molestia

luix87

Pues mira, he creado dos labels para identificar cada valor, y tengo dos textbos para q el usuario introduzca los valores del Vector A y B, ademas he creado dos botones el de calcular y salir. En el boton de calcular he puesto este codigo:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       
'En esta parte he puesto que el valor del textbox 1 y 2 sean mayores o igaules a 0 y menores o iguales q a 15
If Val(TextBox1.Text >= 0 And Val(TextBox2.Text <= 15)) Then

            '
            'Iniciamos las listas a ordenar (puede sustituir este proceso
            'por otro de lectura con el fin de tomar los datos de                entrada
              'estandar)
            Dim VectorA() As Integer = {"0", "2", "4", "6", "8", "10", "12", "14", "16", "18", "20"}
            Dim VectorB() As Integer = {"10", "20", "30", "40", "50", "60", "70", "80", "90", "100"}

            'Declarar la matriz que va a almacenar el resultado de
            'fusionar las dos anteriores

            Dim vectorC(VectorA.Length + VectorB.Length) As Integer
            'Fusionar VectorA y VectorB y almacenar el Resultadoen VectorC
            'El metodo "Fusionar" devolvera un 0 cuando no se pueda
            'realizar la funcion.
            Dim ind, r As Double
            r = Fusionar(VectorA, VectorB, vectorC)


            'Escribir la matriz resultante
            If (r <> 0) Then
                For ind = 0 To VectorB.Length - 1
                    MessageBox.Show("La suma de los vectores es: " & vectorC(ind))
                Next
            Else
                MessageBox.Show("Error")
            End If

        Else
            'Como podras ver aqui le he puesto que si el usuario introduce un valor q no esta en el rango permitido, que le muestre un msj, de la indicacion y q cierre el programa
            MessageBox.Show("Ha introducido valores no permitidos")
            MessageBox.Show("Intente de nuevo")
            MessageBox.Show("Solo se permite un valor maximo de 15")
            Me.Close()
        End If

       
    End Sub

**Cabe destacar que los label no permiten letras, ya que para eso encontre una funcion que pude emplear a la perfeccion, dicha funcion esta hecha en un modulo y es la siguiente:

Module Module1
    Function SoloNumeros(ByVal Keyascii As Short) As Short
        If InStr("1234567890", Chr(Keyascii)) = 0 Then
            SoloNumeros = 0
        Else
            SoloNumeros = Keyascii
        End If
        Select Case Keyascii
            Case 8
                SoloNumeros = Keyascii
            Case 13
                SoloNumeros = Keyascii
        End Select
    End Function
End Module

**Y luego lo invoco en cada uno de los labels, de la siguiente manera:

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
        Dim KeyAscii As Short = CShort(Asc(e.KeyChar))
        KeyAscii = CShort(SoloNumeros(KeyAscii))
        If KeyAscii = 0 Then
            e.Handled = True
        End If

**Y para que la funcion trabaje a la perfeccion se invoco de la siguiente manera

Public Class Form1
    Inherits System.Windows.Forms.Form

'Aqui es en donde se invoca
    Public KeyAscii As Short

Y eso es todo el codigo que tengo hasta el momento, nose si hay de mas o falta algo  o nose si esta bien en la forma que se los he planteado, espero que me puedand ayudar amigos de este Gran foro, les estare eternamente agradecidos

Atrum