Essa parte eu consegui resolver, olhe como ficou:
#include<stdio.h>
#include<conio.h>
#include <stdlib.h>
#include<string.h>
#include<ctype.h>// para usar função toupper
int main(){
char dna[15], ch,*ch2,ch1;
int i,opcao,tam,contDif,contBase;
int valida=0;//variável para validar a cadeia de DNA
printf(“Digite uma cadeia de DNA: “);
setbuf(stdin, 0);
fgets(dna,15,stdin);
tam=strlen(dna);
//adicionei a função toupper, para o caso de o usuário digitar em minusculo.
for(i=0;i<tam-1;i++){
if(toupper(dna[i]) != ‘A’ && toupper(dna[i]) != ‘C’ && toupper(dna[i]) != ‘G’ && toupper(dna[i]) != ‘T’){
valida=1;
}
}
if (valida==0)
printf(”\nSequencia de dna valida! Prossiga. “);
else {
printf(”\nSequencia de dna invalida!”);
}
Mas agora to com dúvida em outra parte, não sei porque não está pegando o caracter no case 1 e 2
Vejam se podem me ajudar
#include<stdio.h>
#include<conio.h>
#include <stdlib.h>
#include<string.h>
#include<ctype.h>// para usar função toupper
int main(){
char dna[15], ch,*ch2,ch1;
int i,opcao,tam,contDif,contBase;
int valida=0;//variável para validar a cadeia de DNA
printf(“Digite uma cadeia de DNA: “);
setbuf(stdin, 0);
fgets(dna,15,stdin);
tam=strlen(dna);
//adicionei a função toupper, para o caso de o usuário digitar em minusculo.
for(i=0;i<tam-1;i++){
if(toupper(dna[i]) != ‘A’ && toupper(dna[i]) != ‘C’ && toupper(dna[i]) != ‘G’ && toupper(dna[i]) != ‘T’){
valida=1;
}
}
if (valida==0)
printf(”\nSequencia de dna valida! Prossiga. “);
else {
printf(”\nSequencia de dna invalida!”);
}
printf("\n\n1 - Digite um caracter referente a base nitrogenada: ");
printf("\n2 - Contar o numero de ocorrencias de uma determinada base nitrogenada na cadeia: ");
printf("\n3 - Apresentar a cadeia complementar a cadeia inserida: ");
printf("\n4 - Comparar a similaridade e acoplamento entre duas cadeias: ");
printf("\n\n\tEntre com a opcao desejada: ");
scanf("%i",&opcao);
//strchr(string, caracter) Este função retorna um ponteiro para a primeira ocorrência de "caracter".
switch (opcao){
case 1: printf("\n\nDigite um caracter referente a base nitrogenada: ");
ch = getchar();
ch2 = strchr(dna, ch);
if (*ch2){
printf("\n");
printf("\nA primeira ocorrencia de %c eh na posicao %d\n",ch,ch2 - dna);
}else{
printf("\nCaractere nao encontrado.\n");
}
//2. Contar o número de bases nitrogenadas diferentes encontrada na cadeia.
contDif=0;
for(i=0;i<dna[i]!=0;i++){
if (dna[i]!=ch){
contDif=contDif+1;
}
}
printf("\n\nO numero de bases diferentes de %c eh: %i\n",ch,contDif-1);
break;
case 2: printf("\n\nDigite um caracter referente a base nitrogenada: ");
ch1 = getchar();
contBase=0;
for(i=0;i<dna[i]!=0;i++){
if (dna[i]==ch1){
contBase=contBase+1;
}
}
printf("\nO numero de ocorrencias da base %c eh: %i\n",ch1,contBase);
break;
case 3: for(i=0;i<tam-1;i++){
if(toupper(dna[i]) =='A'){
printf("\nA -- T");
}
if(toupper(dna[i]) =='C'){
printf("\nC -- G");
}
if(toupper(dna[i]) =='T'){
printf("\nT -- A");
}
if(toupper(dna[i]) =='G'){
printf("\nG -- C");
}
}
break;
default:
printf("\nOpcao invalida!");
}
getch();
return 0;
}