Foros del Web » Programación para mayores de 30 ;) » .NET »

Numero M-Alternante

Estas en el tema de Numero M-Alternante en el foro de .NET en Foros del Web. Buenos días compañeros, Tengo un problema el quiero solicitar su valiosa ayuda. (solo busco un tip, idea que me pueda ayudar a resolver el problema) ...
  #1 (permalink)  
Antiguo 15/04/2014, 07:55
 
Fecha de Ingreso: abril-2014
Mensajes: 5
Antigüedad: 10 años
Puntos: 0
Numero M-Alternante

Buenos días compañeros,

Tengo un problema el quiero solicitar su valiosa ayuda. (solo busco un tip, idea que me pueda ayudar a resolver el problema)

El problema es el siguiente:

Un número entero positivo se dice M-alternante si : El primer dígito es par entonces los 2 dígitos siguientes deben ser impares, luego los tres siguientes dígitos deben ser pares y así sucesivamente.

Por ejemplo: 122357 es un número M-alternante de orden 3
Lo que no encuentro como hacer es para ir comparando si el primero es par, y luego los siguientes 2 de la cadena sean impares y luego los siguientes 3 de la cadena sean impares.

Les agradezco mucho cualquier tip que me puedan dar,
  #2 (permalink)  
Antiguo 15/04/2014, 11:37
Avatar de drako_darpan  
Fecha de Ingreso: octubre-2008
Ubicación: Sinaloa
Mensajes: 617
Antigüedad: 15 años, 6 meses
Puntos: 58
Respuesta: Numero M-Alternante

Hola que tal, bueno no se muy bien que quieres hacer, pero tratare de darte una leve ayuda

Se me ocurre que obtengas el tamaño de los digitos y hagas un ciclo, para obtener digito por digito, con el substring.

Código C#:
Ver original
  1. nLongitud = Cadena.ToString().length;
  2. bInicio = true;
  3. nIncremento = 2;
  4. nTotal = 2;
  5.  
  6. for( i = 0; i <= nLongitud; i++ )
  7. {
  8.    if( bInicio )
  9.    {
  10.        // solo se ejecute 1 vez
  11.        Cadena.Substring(0,1).ToString();
  12.        bInicio = false;
  13.    }
  14.    else
  15.    {
  16.        // Los demas de 2 en 2
  17.        Cadena.Substring(nIncremento , nTotal );
  18.        nIncremento += 2;
  19.        nTotal += 2;
  20.    }
  21. }

Es lo que se me ocurre
__________________
Your Code as a Crime Scene...
  #3 (permalink)  
Antiguo 17/04/2014, 15:44
 
Fecha de Ingreso: abril-2008
Mensajes: 64
Antigüedad: 16 años
Puntos: 2
Respuesta: Numero M-Alternante

Hola buenas noches:

Mi propuesta seria algo asi, esta probado y funciona(creo) habria que hacer muchos controles pero bueno, mi idea era:

1) lograr el primer digito y saber si es par o inpar para saber la secuencia
2)una vez sabido eso declaramos un control que empieze en 2 y se vaya incrementando
3)si el primer digito es par los siguientes digitos deben de ser inpar, por lo tanto comenzamos otro blucle desde 0 hasta 'control' y que vaya viendo si son inpar
4)al terminar ese segundo blucle, declaramos la variable 'par' a lo contrario que estaba antes, para asi en la proxima vuelta buscar lo contrario, es decir, si el primer digito es par la variable par sera true, por lo tanto los siguiente digitos deben de ser inpar, y al terminar esa busqueda declaramos par=false para asi en la siguiente vuelta buscar los siguintes pares

Código vb:
Ver original
  1. Private Sub comprobar_Click(sender As Object, e As EventArgs) Handles comprobar.Click
  2.         Dim numeros As Integer = Convert.ToInt64(numero.Text)
  3.         Dim alternante As Boolean
  4.         Dim par As Boolean
  5.         par = False
  6.         Dim cuantos As Integer
  7.         Dim control As Integer
  8.         alternante = True
  9.         Dim primer_digito As Integer = CInt(numero.Text.Substring(0, 1))
  10.         If (primer_digito Mod 2 = 0) Then
  11.             par = True
  12.         End If
  13.         cuantos = 0
  14.         control = 2
  15.         Dim j As Integer = 1
  16.         Dim longitud As Integer = numero.TextLength
  17.         For i = 1 To longitud
  18.             cuantos = 0
  19.             If (par = True) Then
  20.                 While (cuantos < control)
  21.                     If (CInt(numero.Text.Substring(j, 1)) Mod 2 <> 0) Then
  22.                     Else
  23.                         alternante = False
  24.                     End If
  25.                     j = j + 1
  26.                     i = i + 1
  27.                     cuantos = cuantos + 1
  28.                 End While
  29.                 par = False
  30.             Else
  31.                 While (cuantos < control)
  32.                     If (CInt(numero.Text.Substring(j, 1)) Mod 2 = 0) Then
  33.                     Else
  34.                         alternante = False
  35.                     End If
  36.                     j = j + 1
  37.                     i = i + 1
  38.                     cuantos = cuantos + 1
  39.                 End While
  40.                 par = True
  41.             End If
  42.             control = control + 1
  43.         Next
  44.         If (alternante = True) Then
  45.             MessageBox.Show("el numero es m-alternante")
  46.         Else
  47.             MessageBox.Show("El numero no es m-alternante")
  48.         End If

faltaria hacer controles de longitudes,es decir si ingresas 122333 te va a dar bien, pero si metes 1223 te va a dar un error porque faltan numero, pero eso ya lo dejo para que le des tu un par de vueltas.

Espero haberte ayudado, igual un poco larga la explicacion, pero creo que el tema lo requeria para explicarme bien.

Espero una respuesta tuya, para poder seguir ayudandote.

Un saludo

Etiquetas: numero
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:54.