magaiver Postado Outubro 25, 2008 Denunciar Share Postado Outubro 25, 2008 O algoritmo esta meio confusoMas aí vai o algoritmo a ser realizadominha duvida esta na hora de achar a cadeia1 armazenada em um vetor dentro do vetor da cadeia 2Projeto GenomaNome do arquivo fonte: genoma.algUm grande projeto mundial está em curso para mapear todo o material genético do ser humano: oProjeto Genoma Humano. As moléculas de DNA (moléculas que contêm material genético)podem ser representadas por cadeias de caracteres que usam um alfabeto de apenas 4(quatro)letras: ‘A’,‘C’, ‘T’ e ‘G’. Um exemplo de uma cadeia é: TCATATGCAAATAGCTGCATACCGA.Nesta tarefa você deverá produzir uma ferramenta muito utilizada no projeto Genoma: umprograma que procura ocorrências de uma pequena cadeia de DNA (que vamos chamar de p)dentro de uma outra cadeia de DNA (que vamos chamar de t). Você deverá procurar dois tipos deocorrência: a "direta" e a "complementar invertida".Uma ocorrência direta é quando a cadeia p aparece como sub-cadeia dentro de t. Por exemplo, se p =CATA e t = TCATATGCAAATAGCTGCATACCGA, então p ocorre na forma direta na posição 2 e naposição 18 de t.Uma ocorrência complementar invertida depende da seguinte correspondência entre as letras do DNA:‘A’Û‘T’ e ‘G’ Û‘C’. "Complementar o DNA" significa trocar as letras de uma cadeia de DNA seguindoessa correspondência. Se complementarmos a cadeia CATA, vamos obter GTAT. Mas além decomplementar, é preciso também inverter, ou seja, de GTAT obter TATG. E é esta cadeia que deverá serprocurada, no caso da ocorrência complementar invertida. Assim, se p e t são as mesmas cadeias doexemplo anterior, então p ocorre na forma complementar invertida na posição 4 de t.1. TarefaSua tarefa é escrever um programa que, dadas duas cadeias p e t, onde o comprimento de p é menor ouigual ao comprimento de t, procura todas as ocorrências diretas e todas as ocorrências complementaresinvertidas de p em t.2. Entrada de DadosOs dados de entrada contém vários conjuntos de teste. Cada conjunto de teste é composto por três linhas. Aprimeira linha contém dois inteiros positivos, M e N, sendo M £ N, que indicam respectivamente ocomprimento das cadeias de DNA p e t, conforme descrito acima. A segunda linha do conjunto de testecontém a cadeia p, e a terceira linha contém a cadeia t, onde p e t são compostas utilizando apenas oscaracteres ‘A’, ‘C’, ‘G’ e ‘T’. O final do arquivo de testes é indicado quando M = N = 0 (este últimoconjunto de testes não é válido e não deve ser processado). Os dados de entrada contêm ao menos umconjunto de teste que deve ser processado.Exemplo de Entrada2 4ACTGGT4 25CATATCATATGCAAATAGCTGCATACCGA0 03. Saída de DadosSeu programa deve produzir os dados de saída abaixo. Para cada conjunto de teste dos dados deentrada seu programa deve produzir quatro linhas no arquivo de saída. A primeira linha deveconter um identificador do conjunto de teste, no formato “Teste n”, onde n é numerado a partir de1. Na segunda linha deve aparecer a lista, em ordem crescente, com a posição inicial de cadaocorrência, na forma direta, do padrão p na seqüência t. Na terceira linha deve aparecer a lista, emordem crescente, com a posição inicial de cada ocorrência, na forma complementar invertida, dopadrão p na seqüência t. A quarta linha deve ser deixada em branco. A grafia mostrada noExemplo de Saída, abaixo, deve ser seguida rigorosamente.Exemplo de SaídaTeste 1ocorrência direta: 0ocorrência complementar invertida: 3Teste 2ocorrência direta: 2 18ocorrência complementar invertida: 4(esta saída corresponde ao exemplo de entrada acima)algoritmo "semnome"// Função :// Autor :// Data : 15/8/2002// Seção de DeclaraçõesvarC, A, G, T, cadeia1, cadeia2: caracterM, N, testen,I,J,K,L,P,Q,cont: inteirovetM: vetor [1..20] de caractervetN: vetor [1..20] de caracterVetMI: vetor [1..20] DE caracterVetIN: vetor [1..20] de caracterinicioJ<-0K<-0L<-0Q<-0escreval ("Informe o número de caracteres que conterá a primeira cadeia e a segunda cadeia, ou seja, o comprimento. ")leia (M, N)enquanto M>N facaescreval ("Entrada de dados incorreta. Digite novamente (a cadeia 1 deve ser menor ou igual a cadeia2")leia (M,N)fimenquantoSe (M<>0) e (N<>0) então Para I de 1 ate M faca escreval ("Digite a cadeia p. Deve conter apenas os caracteres A, C, G, T (informe uma letra e tecle enter). ") leia (cadeia1) J<-J+1 VetM[J]<-cadeia1 fimpara Para I de 1 ate N faca escreval ("Digite a cadeia t. Deve conter apenas os caracteres A, C, G, T. ") leia (cadeia2) K<-K+1 VetN[K]<-cadeia2 fimpara J<-0 L<-0 Para I de 1 ate M faca L<-L+1 J<-J+1 Se (vetM[J]="A") então vetMI[L]<-"T" senao Se (vetM[J]="T") então VEtMI[L]<-"A" senao Se (vetM[J]="C") então vetMI[L]<-"G" senao VetMI[L]<-"C" fimse fimse fimse fimpara P<-L Para I de 1 ate P faca Q<-Q+1 vetin[Q]<-vetmi[L] L<-L-1 fimparafimalgoritmo Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
magaiver
O algoritmo esta meio confuso
Mas aí vai o algoritmo a ser realizado
minha duvida esta na hora de achar a cadeia1 armazenada em um vetor dentro do vetor da cadeia 2
Projeto Genoma
Nome do arquivo fonte: genoma.alg
Um grande projeto mundial está em curso para mapear todo o material genético do ser humano: o
Projeto Genoma Humano. As moléculas de DNA (moléculas que contêm material genético)
podem ser representadas por cadeias de caracteres que usam um alfabeto de apenas 4(quatro)
letras: ‘A’,‘C’, ‘T’ e ‘G’. Um exemplo de uma cadeia é: TCATATGCAAATAGCTGCATACCGA.
Nesta tarefa você deverá produzir uma ferramenta muito utilizada no projeto Genoma: um
programa que procura ocorrências de uma pequena cadeia de DNA (que vamos chamar de p)
dentro de uma outra cadeia de DNA (que vamos chamar de t). Você deverá procurar dois tipos de
ocorrência: a "direta" e a "complementar invertida".
Uma ocorrência direta é quando a cadeia p aparece como sub-cadeia dentro de t. Por exemplo, se p =
CATA e t = TCATATGCAAATAGCTGCATACCGA, então p ocorre na forma direta na posição 2 e na
posição 18 de t.
Uma ocorrência complementar invertida depende da seguinte correspondência entre as letras do DNA:
‘A’Û‘T’ e ‘G’ Û‘C’. "Complementar o DNA" significa trocar as letras de uma cadeia de DNA seguindo
essa correspondência. Se complementarmos a cadeia CATA, vamos obter GTAT. Mas além de
complementar, é preciso também inverter, ou seja, de GTAT obter TATG. E é esta cadeia que deverá ser
procurada, no caso da ocorrência complementar invertida. Assim, se p e t são as mesmas cadeias do
exemplo anterior, então p ocorre na forma complementar invertida na posição 4 de t.
1. Tarefa
Sua tarefa é escrever um programa que, dadas duas cadeias p e t, onde o comprimento de p é menor ou
igual ao comprimento de t, procura todas as ocorrências diretas e todas as ocorrências complementares
invertidas de p em t.
2. Entrada de Dados
Os dados de entrada contém vários conjuntos de teste. Cada conjunto de teste é composto por três linhas. A
primeira linha contém dois inteiros positivos, M e N, sendo M £ N, que indicam respectivamente o
comprimento das cadeias de DNA p e t, conforme descrito acima. A segunda linha do conjunto de teste
contém a cadeia p, e a terceira linha contém a cadeia t, onde p e t são compostas utilizando apenas os
caracteres ‘A’, ‘C’, ‘G’ e ‘T’. O final do arquivo de testes é indicado quando M = N = 0 (este último
conjunto de testes não é válido e não deve ser processado). Os dados de entrada contêm ao menos um
conjunto de teste que deve ser processado.
Exemplo de Entrada
2 4
AC
TGGT
4 25
CATA
TCATATGCAAATAGCTGCATACCGA
0 0
3. Saída de Dados
Seu programa deve produzir os dados de saída abaixo. Para cada conjunto de teste dos dados de
entrada seu programa deve produzir quatro linhas no arquivo de saída. A primeira linha deve
conter um identificador do conjunto de teste, no formato “Teste n”, onde n é numerado a partir de
1. Na segunda linha deve aparecer a lista, em ordem crescente, com a posição inicial de cada
ocorrência, na forma direta, do padrão p na seqüência t. Na terceira linha deve aparecer a lista, em
ordem crescente, com a posição inicial de cada ocorrência, na forma complementar invertida, do
padrão p na seqüência t. A quarta linha deve ser deixada em branco. A grafia mostrada no
Exemplo de Saída, abaixo, deve ser seguida rigorosamente.
Exemplo de Saída
Teste 1
ocorrência direta: 0
ocorrência complementar invertida: 3
Teste 2
ocorrência direta: 2 18
ocorrência complementar invertida: 4
(esta saída corresponde ao exemplo de entrada acima)
algoritmo "semnome"
// Função :
// Autor :
// Data : 15/8/2002
// Seção de Declarações
var
C, A, G, T, cadeia1, cadeia2: caracter
M, N, testen,I,J,K,L,P,Q,cont: inteiro
vetM: vetor [1..20] de caracter
vetN: vetor [1..20] de caracter
VetMI: vetor [1..20] DE caracter
VetIN: vetor [1..20] de caracter
inicio
J<-0
K<-0
L<-0
Q<-0
escreval ("Informe o número de caracteres que conterá a primeira cadeia e a segunda cadeia, ou seja, o comprimento. ")
leia (M, N)
enquanto M>N faca
escreval ("Entrada de dados incorreta. Digite novamente (a cadeia 1 deve ser menor ou igual a cadeia2")
leia (M,N)
fimenquanto
Se (M<>0) e (N<>0) então
Para I de 1 ate M faca
escreval ("Digite a cadeia p. Deve conter apenas os caracteres A, C, G, T (informe uma letra e tecle enter). ")
leia (cadeia1)
J<-J+1
VetM[J]<-cadeia1
fimpara
Para I de 1 ate N faca
escreval ("Digite a cadeia t. Deve conter apenas os caracteres A, C, G, T. ")
leia (cadeia2)
K<-K+1
VetN[K]<-cadeia2
fimpara
J<-0
L<-0
Para I de 1 ate M faca
L<-L+1
J<-J+1
Se (vetM[J]="A") então
vetMI[L]<-"T"
senao
Se (vetM[J]="T") então
VEtMI[L]<-"A"
senao
Se (vetM[J]="C") então
vetMI[L]<-"G"
senao
VetMI[L]<-"C"
fimse
fimse
fimse
fimpara
P<-L
Para I de 1 ate P faca
Q<-Q+1
vetin[Q]<-vetmi[L]
L<-L-1
fimpara
fimalgoritmo
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.