elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


  Mostrar Temas
Páginas: [1]
1  Informática / Hardware / Elección placa de video en: 11 Julio 2011, 18:50 pm
Que tal, que tarjeta recomendarían comprar entre estas dos?

ZOTAC GeForce GTX 465
EVGA GeForce GTX 460 SE

2  Programación / Programación C/C++ / [C] Split en: 18 Febrero 2011, 20:35 pm
Que tal, hace un tiempo trato de buscar una función split como la gente y no la encuentro... Y tampoco se me ocurre la forma de hacerla...

La elaboración de la función no es muy complicada, solo basta almacenar los tokens devueltos por strtok() o strsep() en un array... Y luego devolverlos, la cabecera de la función sería algo así:

Código
  1. char **split( const char *s1, const char *s2 );

Supongamos que en el main tenemos declarado:

Código
  1. char **tokens;

La asignación sería:

Código
  1. tokens = split( cadena, delimitador );

Pero previamente se debería haber reservado espacio para los tokens, y he aquí el problema, ya que ¿cómo sabremos la cantidad de tokens? ¿y el tamaño de cada una de ellos?... Podríamos reservar un espacio constante, pero podríamos desperdiciar memoria, o caer en un "segmentation fault" si faltase... ¿Cómo hacen otros lenguajes para hacer eficiente esta función?
3  Programación / Programación C/C++ / [C] Contar subcadena en una cadena en: 18 Febrero 2011, 19:18 pm
Qué les parece este ejercicio que me tocó hacer? Tienen alguna mejora?


Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. /** Algoritmo que cuenta la cantidad de cadenas
  6. dentro de otra cadena **/
  7.  
  8. typedef unsigned int ui;
  9. ui cuenta_str(const char *, const char *);
  10.  
  11. int main()
  12. {
  13.    char *cadena = "¿MUNDO? MUNDO, SOY EL DIOS DEL MUNDO, MUNDO DOMINARE";
  14.    char *subcad = "MUNDO";
  15.    ui cuenta = cuenta_str(cadena, subcad);
  16.    printf("La cantidad de veces que %s se repite en %s es: %d", subcad, cadena, cuenta);
  17.    return 0;
  18. }
  19.  
  20. ui cuenta_str(const char *s1, const char *s2)
  21. {
  22.    const char *delim = " ,.!¡¿?/-";
  23.    char *aux = malloc(sizeof(char) * strlen(s1) + 1);
  24.    char *token_Ptr;
  25.    ui cnt = 0;
  26.    if(s1 == NULL)
  27.        return 0;
  28.    strcpy(aux, s1);
  29.    token_Ptr = strtok(aux, delim);
  30.    while(token_Ptr != NULL)
  31.    {
  32.        if(strcmp(token_Ptr, s2) == 0)
  33.            cnt++;
  34.        token_Ptr = strtok(NULL, delim);
  35.    }
  36.    return cnt;
  37. }

Debería liberar la memoria de aux cierto?

EDITADO: Debería también contar MUNDO en la cadena "MUNDOROLA"? creen que sea necesario? Digamos que asumí que cadena = palabra :P
4  Programación / Programación C/C++ / Kdevelop 4.1 - Problemas en: 16 Febrero 2011, 16:23 pm
Que tal, tengo lo siguiente:

LISTA.cpp
Código
  1. #include <iostream>
  2.  
  3. #include "Lista.h"
  4.  
  5. Lista::Lista( U_int i ) : TAM( i ), cnt( 0 )
  6. {
  7.  lista_Ptr = new TIPO_ELEMENTO [i];
  8. }
  9.  
  10. Lista::~Lista()
  11. {
  12.  delete [] lista_Ptr;
  13. }
  14.  
  15. void Lista::Borrar( U_int pos )
  16. {
  17.  if( cnt == 0 )
  18.  {
  19.    std::cerr << "LISTA VACIA";
  20.    return;
  21.  }
  22.  if( pos < 0 || pos >= cnt)
  23.  {
  24.    std::cerr << "Posicion ilegal para borrar";
  25.    return;
  26.  }
  27.  for( U_int i = pos; i < cnt - 2; i++ )
  28.    lista_Ptr[i] = lista_Ptr[i + 1];
  29.  cnt--;
  30. }
  31.  
  32. void Lista::Insertar( TIPO_ELEMENTO e, U_int pos )
  33. {
  34.  if( cnt == TAM )
  35.  {
  36.    std::cerr << "LISTA VACIA";
  37.    return;
  38.  }
  39.  if( pos < 0 || pos > cnt )
  40.  {
  41.    std::cerr << "Posicion ilegal para insertar";
  42.    return;
  43.  }
  44.  for( U_int i = cnt; i > pos; i-- )
  45.    lista_Ptr[i] = lista_Ptr[i-1];
  46.  lista_Ptr[pos] = e;
  47.  cnt++;
  48. }
  49.  
  50. bool Lista::Vacia()
  51. {
  52.  return cnt == 0;
  53. }
  54.  
  55. void Lista::Mostrar( ostream & sal) const
  56. {
  57.  for( U_int i = 0; i < cnt; i++ )
  58.    sal << "Elemento[" << i + 1 << "]:" << lista_Ptr[i] << ",";
  59. }
  60.  
  61. ostream &operator<<( ostream & salida, const Lista & L )
  62. {
  63.  L.Mostrar( salida );
  64.  return salida;
  65. }
  66.  
  67. TIPO_ELEMENTO Lista::getTAM() const
  68. {
  69.  return TAM;
  70. }
  71.  

Lista.h


Código
  1. #ifndef LISTA_H
  2. #define LISTA_H
  3.  
  4. #include <iostream>
  5. using std::ostream;
  6. using std::istream;
  7.  
  8. typedef int TIPO_ELEMENTO;
  9. typedef unsigned int U_int;
  10.  
  11. class Lista{
  12.  
  13.  public:
  14.    Lista( U_int = 0 ); // Constructor de la clase lista
  15.    ~Lista();
  16.    void Mostrar( ostream &) const; // Muestra lista
  17.    void Insertar( TIPO_ELEMENTO, U_int ); // Inserta un elemento en la lista en la posicion 'x'
  18.    void Borrar( U_int ); // Borra un elemento en la lista en la posicion 'x'
  19.    //void Ordenar(); // Ordena la lista en orden ascendente
  20.    bool Vacia(); // La lista esta vacia?
  21.    TIPO_ELEMENTO getTAM() const;
  22.    friend ostream &operator<<( ostream &, const Lista & );
  23.    //friend istream &operator>>( istream &, Lista & );
  24.  private:
  25.    U_int cnt; // Cantidad total de elementos
  26.    U_int TAM;
  27.    TIPO_ELEMENTO *lista_Ptr; // Puntero a lista
  28. };
  29.  
  30. #endif
  31.  

Y el main.cpp

Código
  1. #include <iostream>
  2.  
  3. #include "Lista.h"
  4.  
  5. int main() {
  6.  U_int tam = 10;
  7.  Lista L2( tam );
  8.    if( L2.Vacia() )
  9.      std::cout << "Lista Vacia" << std::endl;
  10.    else
  11.      std::cout << "Lista con:" << L2.getTAM() << " elementos" << std::endl;
  12.  for( U_int i = 0; i < L2.getTAM(); i++ )
  13.    L2.Insertar( i*i, i);
  14.  
  15.  std::cout << L2;
  16.  
  17.  return 0;
  18. }

Cuando quiero compilar con F8, me saltan errores:

http://img832.imageshack.us/i/75593839.png/

A qué se debe?
Lo único que supongo es que tal vez no está tomando la implementación... Pero tampoco sé cómo configurarlo para que la tome...
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines