Dev - C++ - Ayuda con un programa de cadena de ADN

 
Vista:
sin imagen de perfil
Val: 7
Ha disminuido 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Ayuda con un programa de cadena de ADN

Publicado por Roberto (5 intervenciones) el 25/04/2019 15:18:30
Buenos días me ha encargado hacer un programa que me pida n cadenas, en las cuales únicamente se puedan poner las letras ACTG en mayúsculas, unir esas n cadenas en una sola, y al final imprimirlas en el orden ACTG.

Por ejemplo si la cadena es AACGTGGGTAATGAGGTATCC

La imprima de la siguiente manera:
AAAAAAA
CCC
TTTTTT
GGGGGGG

Llevo esta parte del código
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
int main(){
	char str[200],texto[500];
	int n,codigo;
	printf("Dame el numero de elementos en la cadena ACTG: ");
	scanf("%d",&n);
	n=n+1;
	char cadena[n][100];
	for (int i=0;i<n;i++){
		printf("Escriba solo las letras A,C,T,G en mayusculas: \n");
		gets(cadena[i]);
	}
	strcpy(texto,"");
	for(int i=0;i<n;i++){
		strcat(texto,cadena[i]);
		strcat(texto,"");
	}
	printf("Cadena: %s",texto); //Esto me imprime las 3 cadenas juntas

Si alguien pudiera ayudarme se lo agradecería mucho :)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 160
Ha aumentado 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Ayuda con un programa de cadena de ADN

Publicado por Andrés (53 intervenciones) el 25/04/2019 22:49:28
Puedes finalizar las cadenas con # ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <stdio.h>
#include <stdlib.h>
 
unsigned short int counts[5] = {0};
 
void imprimir_uso(void);
void leer(unsigned int);
void imprimir_caracter(char);
 
int main(int argc, char** argv ) {
 
  if(2 != argc) {
    imprimir_uso();
  } else {
 
    unsigned int numero_cadenas = strtoul(argv[1], 0, 10);
 
    leer(numero_cadenas);
 
    printf("\n");
 
    imprimir_caracter('A');
    imprimir_caracter('C');
    imprimir_caracter('T');
    imprimir_caracter('G');
 
  }
 
  return EXIT_SUCCESS;
 
}
 
void leer(unsigned int numero_cadenas) {
 
    char c;
 
    for(register unsigned int i = 0 ;  i < numero_cadenas ; i++) {
 
      printf("Ingresa la cadena %d: ", i+1);
 
      while('#' != (c=getchar())) {
 
        if( 'A' == c || 'C' == c || 'G' == c || 'T' == c ) {
          counts[c%5]++;
        }
 
      }
 
    }
 
}
 
void imprimir_uso(void) {
  printf("Use cadenas <nùmero de cadenas\n");
}
 
void imprimir_caracter(char c) {
 
   for(register unsigned short int i = 0 ; i < counts[c%5] ; i++) {
     putchar(c);
   }
 
   putchar('\n');
 
}


Ejecutar con: <nombre_ejeculatble> <numero_cadenas>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 7
Ha disminuido 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Ayuda con un programa de cadena de ADN

Publicado por Roberto (5 intervenciones) el 26/04/2019 00:54:08
Hola muchas gracias ya lo pude resolver :)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
int main(){
	char caracter;
	int codigo;
	char cadena[100],a[100];
		printf("Escriba solo las letras A,C,T,G en mayusculas: \n");
		gets(cadena);
printf("Cadena: %s\n",cadena);
 
	for (int i=0;i<strlen(cadena);i++){
	codigo=cadena[i];
		if(codigo==65){
			printf("%c",codigo);
		}
	}
	 printf("\n");
		for (int i=0;i<strlen(cadena);i++){
	codigo=cadena[i];
		if(codigo==67){
			printf("%c",codigo);
		}
	}
	 printf("\n");
		for (int i=0;i<strlen(cadena);i++){
	codigo=cadena[i];
		if(codigo==84){
			printf("%c",codigo);
		}
	}
	 printf("\n");
		for (int i=0;i<strlen(cadena);i++){
	codigo=cadena[i];
		if(codigo==71){
			printf("%c",codigo);
		}
	}
	 printf("\n");
return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar