[ Foro de C ]

Duda en programa

07-Dec-2020 23:37
Jaime Hernandez
2 Respuestas

Tengo un proyecto de programacion en c, el codigo ya funciona correctamente, solo me falta cumplir una condicion, que es para que cuando se introduzca un valor distinto a A, G, C o T, marque un error y termine el programa, no se como puedo hacerlo, ya intente usando un default, pero me marca error aunque use los caracteres permitidos, que puedo hacer?

#include <stdio.h>
#include <locale.h>
#include <string.h>
#include <ctype.h>
#define MAX 1000

char nt[MAX+1]; /*Contando caracter '\0' */

int main(void)
{
   
int i, lon, A=0,C=0,G=0,T=0;

setlocale(LC_ALL,"");

puts("Introducir cadena de ADN:");

fgets(nt, MAX+1, stdin);

lon=strlen(nt);

for(i=0; i<lon; ++i)
   nt[i]= toupper(nt[i]);
       
for(i=0; i<lon; ++i){
   switch(nt[i]){
          case'A': A++;
                 break;
                 
          case'C': C++;
                 break;
                 
          case'G': G++;
                 break;
                 
          case'T': T++;
                 break;
                 
     }
}  
 
 printf("%d %d %d %d", A,C,G,T);

 return 0;
}


08-Dec-2020 13:05
Invitado (jose)

pareceser que strlen si cuenta el caracter de final de string

haz una prueba y veras que ese caracter es el que te esta mareando

no entiendo para que una variable global, cuando su uso debe ser restringido todo lo posible

buena suerte ;-)


08-Dec-2020 17:19
Nacho Cabanes (+83)

Casi lo tienes. Sólo te falta comprobar si A+C+G+T=lon

Si ocurre eso, no hay caracteres no válidos.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)