Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - HIDE_95

#1
Buenas,
necesito realizar un cronometro para implantar en arduino. Para la entrada tengo dos puladores uno para el start/lap y el otro para el stop/reset y a la salida tres 7 segmentos dos para los segundos y el otro para las decimas de segundo. Nose como implementar los pulsadores en c.
#2
Buenas , he formateado el Pc hace poco tiempo ,pero desde entonces no puedo instalar el controlador de pantalla de AMD (una HD Radeon 6470m) he probado todo lo encontrado en google y nada me da el mismo error .
Mi grafica va bien la probe hace nada con FurMark, pero al formatear y despues instalar el controlador ha empezado a darme el error atikmpag.sys 116 en el BSOD.
He probado extender el fichero manualmente y copiarlo en la carpeta de los drivers de system32 , he vuelto a formatear el PC y nada no me acepta el driver.. Es instalarlo, reiniciar y me aparece el error... por lo que tengo que entrar al modo seguro y desinstalar el driver para que pueda iniciar el PC sin que me de error.. Si a alguien ya le ha pasado y lo ha solucionado espero que me pueda echar una mano. Un saludo :D

#3
Programación C/C++ / Cambiar de String a natural
8 Septiembre 2015, 18:42 PM
Buenas, estoy haciendo un programa y me he quedado atascado en un subalgoritmo... En este subalgoritmo  le paso como parametro de entrada un string con digitos y simbolos( '+' o '-' ) y me tiene que devolver el resultado de la expresion puesta en la cadena de caracteres. Mi duda es como puedo pasar los digitos , por ejemplo , 123 a un numero natural para poder sumarlo. No se me ocurre nada , solo pasarlo caracter a caracter . Espero que me podais echar una mano. Gracias
#4
Buenas tardes. Tengo un problema y llevo un dia intentando solucionarlo pero no hay manera de que encuentre alguna solucion... Se trata de un ejercicio para aprender a moverte por los arrays y los struct . La mayor parte del ejercicio lo tengo resuelto solo me falta un subalgoritmo que al implementarlo no me da el resultado que me pide.
Este es el subalgoritmo que me falta por hacer:
void all_mostFreqKMers(const string &texto, unsigned k, All_KmerMF &all_kmer_mf);
que devuelve todos los k-mer mas frecuentes (all kmer mf) de texto . El tipo All KmerMF debe definirse como:

const unsigned MAX_KMERS = 10; // Maximo numero posible de kmers de tamaño k
typedef array <string, MAX_KMERS> KMers; // Array de cadenas para guardar los kmers mas frecuentes.
struct All_KmerMF
{
KMers kmers; // Listado de kmers (cadenas) mas frecuentes de tamaño k
unsigned num_kmers; // Numero de kmers mas frecuentes de tamaño k
unsigned frec; // Frecuencia de los kmers mas frecuentes de tamano k
};

Asi, en el ejemplo anterior, si llamamos al algoritmo all mostFreqKMers con k = 9, debe devolvernos los k-mers:

ATGATCAAG
CTCTTGATC
TCTTGATCA
CTTGATCAT

que tienen una frecuencia de 3 apariciones en el texto.

Aqui os dejo el codigo que he echo me compila bien , lo unico es que me devuelve por pantalla el mismo kmer , es decir , si pongo k = 9 , me devuelve 10 veces "CTTGATCAT" . Espero que me puedan echar una mano.



#include <iostream>
#include <string>
#include <tr1/array>

using namespace std ;
using namespace std :: tr1 ;
//Constantes y tipos
const unsigned MAX_KMERS = 10; // Maximo numero posible de kmers de tamaño k

typedef array <string, MAX_KMERS> KMers; // Array de cadenas para guardar los kmers mas frecuentes.

struct KmerMF
{
string kmer;
unsigned frec;
};

struct All_KmerMF
{
KMers kmers; // Listado de kmers (cadenas) mas frecuentes de tamano k
unsigned num_kmers; // Numero de kmers mas frecuentes de tamano k
unsigned frec; // Frecuencia de los kmers mas frecuentes de tamano k
};

//Cabecera subalgorimos
unsigned calc_frec(const string &texto, unsigned pos, const string &kmer) ; //Calcula la frecuencia de aparicion de un kmer en el texto
void mostFreqKMers(const string &texto, unsigned k , KmerMF &kmer_mf) ; //Devuelve el kmer (de longitud k) mas frecuente del texto
void all_mostFreqKMers(const string &texto, unsigned k, All_KmerMF &all_kmer_mf); //Devuelve todos los Kmer mas frecuentes del texto

//Algoritmo principal
int main ()
{

unsigned k ;
string texto = string("ATCAATGATCAACGTAAGCTTCTAAGCATGATCAAGGTGCTCACACAGTTTATCCACAAC") +
         "CTGAGTGGATGACATCAAGATAGGTCGTTGTATCTCCTTCCTCTCGTACTCTCATGACCA"  +
         "CGGAAAGATGATCAAGAGAGGATGATTTCTTGGCCATATCGCAATGAATACTTGTGACTT"  +
         "GTGCTTCCAATTGACATCTTCAGCGCCATATTGCGCTGGCCAAGGTGACGGAGCGGGATT"  +
         "ACGAAAGCATGATCATGGCTGTTGTTCTGTTTATCTTGTTTTGACTGAGACTTGTTAGGA"  +
         "TAGACGGTTTTTCATCACTGACTAGCCAAAGCCTTACTCTGCCTGACATCGACCGTAAAT"  +
         "TGATAATGAATTTACATGCTTCCGCGACGATTTACCTCTTGATCATCGATCCGATTGAAG"  +
         "ATCTTCAATTGTTAATTCTCTTGCCTCGACTCATAGCCATGATGAGCTCTTGATCATGTT"  +
         "TCCTTAACCCTCTATTTTTTACGGAAGAATGATCAAGCTGCTGCTCTTGATCATCGTTTC";

All_KmerMF all_kmer_mf ;

cout << "Introduzca k: " ;
cin >> k ;

all_mostFreqKMers ( texto , k , all_kmer_mf ) ;

for ( unsigned i = 0 ; i < all_kmer_mf.num_kmers ; i++ )
{
cout << "Kmers: " << all_kmer_mf.kmers[i] << endl ;
}

cout <<" ; " << all_kmer_mf.frec << " ; " << all_kmer_mf.num_kmers << endl ;

}


unsigned calc_frec(const string &texto, unsigned pos, const string &kmer)
{
unsigned frec , t , k ;

t = unsigned ( texto.size() ) ;
k = unsigned ( kmer.size() ) ;

frec = 0 ;
for ( unsigned i = pos ; i < t ; i++ )
{
if ( texto.substr ( i,k ) == kmer )
{
frec = frec + 1 ;
}
}

return frec ;

}

void mostFreqKMers(const string &texto, unsigned k, KmerMF &kmer_mf)
{
unsigned frecuencia ;
kmer_mf.frec = 0 ;

for ( unsigned i = 0 ; i < ( int( texto.size() ) -k ) ; i++ )
{

frecuencia = calc_frec ( texto , 0 , texto.substr ( i , k ) ) ;
if ( frecuencia >= kmer_mf.frec )
{
kmer_mf.kmer = texto.substr ( i , k ) ;
kmer_mf.frec = frecuencia ;
}

}

}

void all_mostFreqKMers(const string &texto, unsigned k, All_KmerMF &all_kmer_mf)
{

KmerMF kmer ;

all_kmer_mf.num_kmers = 0 ;

for ( unsigned i = 0 ; i < MAX_KMERS  ; i++ )
{
mostFreqKMers ( texto , k , kmer) ;

all_kmer_mf.kmers[i] = kmer.kmer ;
all_kmer_mf.frec = kmer.frec ;
all_kmer_mf.num_kmers++ ;

}


}

#5
Buenas compañeros. Tengo una pequeño problema en el que me he quedado atrancado .... Se trata de este ejercicio:
 Un numero perfecto es un numero natural cuyo valor coincide con la suma de todos sus divisores propios,
es decir todos sus divisores menores que el (incluido el 1). Por ejemplo, el numero 28 se dice que es un
numero perfecto porque su valor coincide con la suma de sus divisores: 28 = 1 + 2 + 4 + 7 + 14
.
 Escribir un programa en C++ que lea por teclado un numero de cifras (mayor que 1) e imprima por pantalla el primer numero perfecto con ese numero de cifras o, en caso de que no exista, imprima un
mensaje indicando que no existe un numero perfecto con ese numero de cifras.


Aqui esta el algoritmo que yo cree , pero no me funciona. Me deja compilarlo pero al poner el numero de cifras deseado no me saca nada por pantalla... Podriais indicarme un poco en que he fallado , gracias :)

Código (cpp) [Seleccionar]
#include <iostream>
#include <math.h>

using namespace std ;

int main ()
{
unsigned n , b , a , perf ;
cout << "Introduzca el numero de cifras: " ;
cin >> n ;
b = pow ( 10 , n) - 1 ;
perf = 0 ;
for ( unsigned i = pow(10 , (n-1)) ; i <= b ; i++ )
{
for (unsigned j = 2 ; j <= i ; j++ )
{
if ( (i % j) == 0 )
{
a = i / j ;
perf = a + perf ;

}
}
if ( perf == i )
{
cout << "Numero perfecto: " << perf << endl ;

}
}

}



Mod: Los códigos deben ir en etiquetas GeSHi