Estou fazendo um programa, mas estou trancado em uma parte. O ojetivo desta parte do programa é ver se as letras em que o usuário digita, são iguais as permitidas. Procurei algumas maneiras de fazer isso, mas só achei essa. O problema deste programa é que quando ele vai analisar a cadeia t, ele sempre mostra que a cadeia é invalida, mesmo estando dentro do exigido, abrindo melhor a cadeia t, descobri que o programa sempre diz que a 18º letra é invalida, mas não consegui descobrir o motivo, mesmo ponto letras validas, a 18º ele mostra que é errada.
A parte do programa é essa:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
main()
{
int M, N, i, j, a, b;
char p[M], t[N];
int letrasT, letraT, letrasP, letraP;
M=5;
N=25;
do
{
do
{
i=0;
letraP=0;
letrasP=0;
printf ("\n Digite a cadeia p: ");
scanf ("%s", p);
if (M!=strlen(p))
printf ("\n\n !!!TAMANHO DE p INVALIDO!!!\n");
for (i=0; i<M; i++)
if ((p!='A') && (p!='C') && (p!='G') && (p!='T'))
letrasP=1;
else
letrasP=0;
for (i=0; i<M; i++)
if (letrasP==1)
letraP=1;
if (letraP==1)
printf ("\n\n !!!CADEIA DE p INVALIDA!!!\n");
}while (letraP==1);
}while (M<strlen(p));
do
{
do
{
i=0;
letraT=0;
letrasT=0;
printf ("\n Digite a cadeia t: ");
scanf ("%s", t);
if (N!=strlen(t))
printf ("\n\n !!!TAMANHO DE t INVALIDO!!!\n");
for (i=0; i<N; i++)
if ((t!='A') && (t!='C') && (t!='G') && (t!='T'))
letrasT=1;
else
letrasT=0;
for (i=0; i<N; i++)
if (letrasT==1)
printf ("*%i", letrasT);
letraT=1;
if (letraT==1)
printf ("\n\n !!!CADEIA DE t INVALIDA!!!\n");
}while (letraT==1);
}while (N<strlen(t));
printf ("\n%s", p);
printf ("\n%s", t);
}