[ 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 (+73)

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

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






Si ya eres usuario del sistema, puedes contestar desde tu cuenta y así ganar prestigio.

Si sólo eres un visitante, puedes optar por...