Red de conocimiento informático - Problemas con los teléfonos móviles - VB u otro lenguaje de programación, hay muchos puntos.

VB u otro lenguaje de programación, hay muchos puntos.

'A--1

'C--2

'G--3

'T--4 p>

'Parece que solo existen estas cuatro letras, ¿por qué se sienten como pares de bases de genes?

Opción explícita

Subcomando privado1_Click()

Atenuar i mientras, j mientras, k mientras

Atenuar S como Cadena, SS como cadena

Dim M() como entero, N como largo

Dim Fc() como entero, Fg() como entero, Fcpg() como entero, Fgpc( ) Como entero, P() como doble, R() como doble, FN como largo

Dim DTa como doble, DTb como doble

S = Text1.Text 'Leer datos, También se puede cambiar para leer desde un archivo TXT.

N = Len(S)

ReDim M(1 a N)

Para i = 1 a N

SS = Medio (S, i, 1)

Seleccione Caso SS

Caso "A"

M(i) = 1

Caso " C"

M(i) = 2

Caso "G"

M(i) = 3

Caso "T"

M(i) = 4

Caso Else

MsgBox "Hay datos anormales en la fuente de datos. Los datos " & CStr(i) & " no es ACGT, salga ", , ","

Salir Sub

Fin Seleccionar

Siguiente i

S = ""

Si N < 51 Entonces

MsgBox "Hay menos de 51 datos en la fuente de datos, salga.

", , ""

Salir Sub

Finalizar si

FN = N - 49

ReDim Fc(1 a FN)

ReDim Fg(1 a FN)

ReDim Fcpg(1 a FN)

ReDim Fgpc(1 a FN)

ReDim P (1 a FN)

ReDim R(1 a FN)

Para i = 1 a 50

Si M(i) = 2 Entonces Fc(1 ) = Fc(1) + 1

Si M(i) = 3 Entonces Fg(1) = Fg(1) + 1

Siguiente i

Para i = 1 a 49

Si M(i) = 2 y M(i + 1) = 3 Entonces Fcpg(1) = Fcpg(1) + 1

Si M (i) = 3 Y M(i + 1) = 2 Entonces Fgpc(1) = Fgpc(1) + 1

Siguiente i

j = Fc(1) + Fg (1)

Si j > 0 Entonces

P(1) = 4 * Fcpg(1) / (j * j)

Si no

P(1) = -1

Fin si

Si Fgpc(1) > 0 Entonces

R(1) = Fcpg(1 ) / Fgpc(1)

Else

R(1) = -1

Finalizar si

Para i = 2 a FN

Fc(i) = Fc(i - 1)

Fg(i) = Fg(i - 1)

Fcpg(i) = Fcpg( i - 1)

Fgpc(i) = Fgpc(i - 1)

Si M(i - 1) = 2 Entonces

Fc(i) = Fc(i) - 1

Si M(i) = 3 Entonces Fcpg(i) = Fcpg(i) - 1

Fin si

Si M(i - 1) = 3 Entonces

Fg(i) = Fg(i) - 1

Si M(i) = 2 Entonces Fgpc(i) = Fgpc(i ) - 1

Fin si

Si M(i + 49) = 2 Entonces

Fc(i) = Fc(i) + 1

Si M(i + 48) = 3 Entonces Fgpc(i) = Fgpc(i) + 1

Fin si

Si M(i + 49) = 3 Entonces

Fg(i) = Fg(i) + 1

Si M(i + 48) = 2 Entonces Fcpg(i) = Fcpg(i) + 1

Fin Si

j = Fc(i) + Fg(i)

Si j > 0 Entonces

P(i) = 4 * Fcpg(i) / (j * j)

De lo contrario

P(i) = -1

Fin si

Si Fgpc(i) > 0 Entonces

R(i) = Fcpg(i) / Fgpc(i)

Si no

R(i) = -1

Finalizar si

Siguiente i

'La siguiente es la salida, que también se puede cambiar para enviarla a un archivo TXT. Donde -1 significa que el divisor es 0.

S = "P" & Chr(9) & Chr(9) & "R" & vbCrLf

Para i = 1 a FN

'S = S & CStr(P(i)) & Chr(9) & CStr(R(i)) & vbCrLf

S = S & Formato(P(i), "0.000000") & Chr( 9) & CStr(R(i)) & vbCrLf

Siguiente i

Texto2.Text = S

End Sub