Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
tremendo codigaso ayudantia
Language:
Ada
Assembly
Bash
C#
C++ (gcc)
C++ (clang)
C++ (vc++)
C (gcc)
C (clang)
C (vc)
Client Side
Clojure
Common Lisp
D
Elixir
Erlang
F#
Fortran
Go
Haskell
Java
Javascript
Kotlin
Lua
MySql
Node.js
Ocaml
Octave
Objective-C
Oracle
Pascal
Perl
Php
PostgreSQL
Prolog
Python
Python 3
R
Rust
Ruby
Scala
Scheme
Sql Server
Swift
Tcl
Visual Basic
Layout:
Vertical
Horizontal
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <ctype.h> #define MAX 26 #define TOTAL_BASES 4 #define BASES "acgt" struct BaseNitrogenada{ int repeticiones; char letra; }; void procesarDatos(int); struct BaseNitrogenada **crearBasesNitrogenadas(); struct BaseNitrogenada *crearBase(char); void contarRepeticiones(char *, struct BaseNitrogenada **); void mostrar(char *, struct BaseNitrogenada **); void freeBases(struct BaseNitrogenada **); int main() { int rep; scanf("%i", &rep); procesarDatos(rep); return 0; } void procesarDatos(int rep) { printf(" CADENA ADN #A #C #G #T\n"); printf("=============================================\n"); for(int i = 0 ; i < rep ; i++) { char *adn = (char *) malloc(MAX); scanf("%s", adn); struct BaseNitrogenada **bases = crearBasesNitrogenadas(); contarRepeticiones(adn, bases); mostrar(adn, bases); free(adn); freeBases(bases); } } struct BaseNitrogenada **crearBasesNitrogenadas() { struct BaseNitrogenada **bases = (struct BaseNitrogenada **) malloc(sizeof(struct BaseNitrogenada *) * TOTAL_BASES); for(int i = 0 ; i < TOTAL_BASES ; i++) { bases[i] = crearBase(BASES[i]); } return bases; } struct BaseNitrogenada *crearBase(char letra) { struct BaseNitrogenada *base = (struct BaseNitrogenada *) malloc(sizeof(struct BaseNitrogenada)); base->letra = letra; base->repeticiones = 0; return base; } void contarRepeticiones(char *adn, struct BaseNitrogenada **bases) { for(int i = 0 ; i < strlen(adn) ; i++) { for(int j = 0 ; j < TOTAL_BASES ; j++) { if(tolower(adn[i]) == bases[j]->letra) { bases[j]->repeticiones += 1; break; } } } } void mostrar(char *adn, struct BaseNitrogenada **bases) { printf("%25s", adn); for(int i = 0 ; i < TOTAL_BASES ; i++) { if(i == 0) { printf("%4i", bases[i]->repeticiones); } else { printf("%5i", bases[i]->repeticiones); } } printf("\n"); } void freeBases(struct BaseNitrogenada **bases) { for(int i = 0 ; i < TOTAL_BASES ; i++) { free(bases[i]); } free(bases); }
gcc
Show compiler warnings
[
+
] Compiler args
[
+
]
Show input
edit mode
|
history
|
discussion