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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / Igualar punteros ***, ** y * en: 1 Octubre 2016, 02:33 am
Hola compañeros, tengo una gran duda sobre los punteros... ¿Es posible almacenar la direccion de memoria de un puntero * en un puntero *** o uno ** a *** y que estos sean arreglos? De ser posible, ¿Cómo accedo a sus valores?  :P

Así...

Código
  1.    int* p1; // lo inicializamos con el operador new...
  2.    int** p2; // lo inicializamos con operador new y sus respectivos ciclos...
  3.    int*** p3;
  4.    p3 = p1;
  5.    p3 = p2;
2  Programación / Programación C/C++ / Copiar texto mediante código en: 9 Julio 2016, 04:53 am
Hola que tal, programando me surgió la duda  :huh: de si es posible copiar el texto que ya está impreso en la consola, o si hay alguna manera de seleccionarlo u obtenerlo mediante código, no sé si me explico xD ya encontré como almacenarlo en el clipboard pero me falta poder almacenarlo en una variable y más aun poder seleccionarlo  :xD  Gracias!  :P

3  Programación / Java / [APORTE] Eliminar un retweet Twitter4j v4.0.4 en: 30 Diciembre 2015, 05:45 am
Buenas compañeros, hace un rato estuve buscando como poder eliminar un retweet con el paquete Twitter4j (el cual te permite obtener datos del servidor de Twitter para poder así crear tu aplicación) mi problema era que no encontraba las funciones correctas para poder eliminar un retweet hecho por ti así que después de un buen rato di con la solución, espero les sirva! ;D
Código
  1. List<Status> retweets = twitter.getRetweets(statusID);
  2. for (Status retweet : retweets)
  3.      if (retweet.getUser().getId() == twitter.getId())
  4. twitter.destroyStatus(retweet.getId());

(Es una adaptación de un código que andaba por ahí el cual era incorrecto o al menos a mi no me funcionaba en esta versión  :xD )
4  Programación / Programación C/C++ / [Consulta] Arboles binarios en: 11 Noviembre 2015, 04:44 am
Buenas a quien lo lea!

Estoy programando un árbol binario, pero al momento de compilar el programa, la función virtual no la reconoce o no se linkea, ¿a qué se debe? o que hago mal?  :-\ ojalá puedan ayudarme, gracias!

BTNode.h :
Código
  1. #define BTNODE_H_INCLUDED
  2.  
  3. #include <sstream>
  4.  
  5. using namespace std;
  6.  
  7. template<typename IT>
  8. struct BTNode {
  9.  
  10.  IT data;
  11.  BTNode<IT>* left;
  12.  BTNode<IT>* right;
  13.  
  14.  BTNode(const IT &Data, BTNode<IT>* lv = NULL, BTNode<IT>* rv = NULL) :
  15.    data(Data), left(lv), right(rv) {}
  16.  
  17.  virtual ~BTNode() {}
  18.  
  19.  virtual string toString() const {
  20.  
  21.    ostringstream os;
  22.  
  23.    os << data;
  24.    return os.str();
  25.  }
  26. };
  27.  
  28. template <typename IT>
  29. ostream &operator<<(ostream &out, const BTNode<IT> &node) {
  30.  
  31.  return out << node.toString();
  32. }
  33.  
  34. #endif // BTNODE_H_INCLUDED
  35.  
  36.  


Binary_Tree.h:
Código
  1.  
  2. #ifndef BINARY_TREE_H_INCLUDED
  3. #define BINARY_TREE_H_INCLUDED
  4.  
  5. #include <cstddef>
  6. #include <sstream>
  7. #include <stdexcept>
  8. #include <string>
  9. #include "BTNode.h"
  10.  
  11. using namespace std;
  12.  
  13. template <typename IT>
  14. class Binary_Tree {
  15.  
  16. public:
  17.  
  18.  Binary_Tree(): root(NULL) {}
  19.  Binary_Tree(const IT &Data, const Binary_Tree<IT> &lc = Binary_Tree(), const Binary_Tree<IT> &rc = Binary_Tree()):
  20.    root(new BTNode<IT>(Data, lc.root, rc.root)) {}
  21.  
  22.  virtual ~Binary_Tree() {}
  23.  
  24.  Binary_Tree<IT> getLeftSubtree() const;
  25.  Binary_Tree<IT> getRigthSubtree() const;
  26.  const IT &getData() const;
  27.  
  28.  bool isNull() const;
  29.  bool isLeaf() const;
  30.  
  31.  virtual string toString() const; //<---esta es la función!!!!
  32.  
  33.  static Binary_Tree<IT> readBinaryTree(istream& in);
  34. Binary_Tree(BTNode<IT>* newRoot): root(newRoot) {}
  35. protected:
  36.  
  37.  
  38.  BTNode<IT>* root;
  39. };
  40.  
  41. template<typename IT>
  42. ostream &operator<<(ostream &out, const Binary_Tree<IT> &tree) {
  43.  
  44.  return out << tree.toString();
  45. }
  46.  
  47. template<typename IT>
  48. istream &operator>>(istream &in, Binary_Tree<IT> &tree) {
  49.  
  50.  tree = Binary_Tree<IT>::readBinaryTree(in);
  51.  return in;
  52. }
  53.  
  54. #endif // BINARY_TREE_H_INCLUDED
  55.  
  56.  

Binary_Tree.cpp
Código
  1. #include "Binary_Tree.h"
  2.  
  3. using namespace std;
  4.  
  5. template<typename IT>
  6. Binary_Tree<IT> Binary_Tree<IT>::getLeftSubtree() const {
  7.  
  8.  if(root == NULL) {
  9.  
  10.    throw invalid_argument("getLeftSubtree on empty tree");
  11.  }
  12.  
  13.  return Binary_Tree<IT>(root->left);
  14. }
  15.  
  16. template<typename IT>
  17. Binary_Tree<IT> Binary_Tree<IT>::getRigthSubtree() const {
  18.  
  19.  if(root == NULL) {
  20.  
  21.    throw invalid_argument("getLeftSubtree on empty tree");
  22.  }
  23.  
  24.  return Binary_Tree<IT>(root->right);
  25. }
  26.  
  27. template<typename IT>
  28. bool Binary_Tree<IT>::isLeaf() const {
  29.  
  30.  if(root != NULL) {
  31.  
  32.    return root->left == NULL && root->right == NULL;
  33.  } else {
  34.  
  35.    return true;
  36.  }
  37. }
  38.  
  39. template<typename IT>
  40. string Binary_Tree<IT>::toString() const {
  41.  
  42.  ostringstream os;
  43.  
  44.  if(isNull()) {
  45.  
  46.    os << "NULL\n";
  47.  } else {
  48.  
  49.    os << *root << "\n";
  50.    os << getLeftSubtree().toString();
  51.    os << getRigthSubtree().toString();
  52.  }
  53.  
  54.  return os.str();
  55. }
  56.  
  57.  
5  Programación / Programación C/C++ / Duda con excepciones C++ en: 6 Junio 2015, 22:55 pm
Buenas, en un ejercicio me piden crear una función con excepciones, una debe lanzar la excepción ios::failure  si el formato ingresado no es válido, y la otra es que el numero ingresado esté fuera del intervalo dado en los parámetros de la función (out_of_range), así como lo tengo funciona, pero quería saber si está en lo correcto o hay una mejor forma de ponerlo (con las mismas excepciones) ya que quiero que cuando ingresen un caracter muestre la excepción failure pero solo toma la que le sigue. Gracias!

Código
  1. #include <iostream>
  2. #include <stdexcept>
  3. #include <stdlib.h>
  4. #include <limits>
  5. #include <ios>
  6.  
  7. using namespace std;
  8.  
  9. int read_int(const string &Cad, const int &Min, const int &Max) {
  10.  int x;
  11.  while (true) {
  12.    try {
  13.      cout << Cad;
  14.      cin >> x;
  15.     } catch (ios::failure &ex) {
  16.       cout << "Error en la cadena de numeros, intenta de nuevo.\n";
  17.       cin.clear();
  18.       cin.ignore(numeric_limits<int>::max(),'\n');
  19.    }
  20.    try {
  21.      if(x<Min||x>Max) {
  22.        throw out_of_range("");
  23.      }
  24.      return x;
  25.    } catch (out_of_range &ex) {
  26.       cout << "Error en el intervalo, intenta de nuevo.\n";
  27.       cin.clear();
  28.       cin.ignore(numeric_limits<int>::max(),'\n');
  29.     }
  30.  }
  31.  
  32. }
  33.  
  34. main () {
  35.  cout << read_int("Ingresa un numero entre 4 y 10: ", 4, 10);
  36. }
  37.  



He modificado el código, ya me lanza correctamente las excepciones, pero aún me queda la duda si es lo correcto.

Código
  1. #include <iostream>
  2. #include <stdexcept>
  3. #include <stdlib.h>
  4. #include <limits>
  5. #include <ios>
  6.  
  7. using namespace std;
  8.  
  9. int read_int(const string &Cad, const int &Min, const int &Max) {
  10.  cin.exceptions(ios::failbit);
  11.  int x;
  12.  while (true) {
  13.    try {
  14.      cout << Cad;
  15.      cin >> x;
  16.      if(x<Min||x>Max) {
  17.        throw out_of_range("");
  18.      }
  19.     return x;
  20.     } catch (out_of_range &ex) {
  21.       cout << "Error en el intervalo, intenta de nuevo.\n";
  22.       cin.clear();
  23.       cin.ignore(numeric_limits<int>::max(),'\n');
  24.     }catch (ios::failure &ex) {
  25.       cerr << "Error en la cadena de numeros, intenta de nuevo.\n";
  26.       cin.clear();
  27.       cin.ignore(numeric_limits<int>::max(),'\n');
  28.    }
  29.  }
  30. }
  31.  
  32. main () {
  33.  cout << read_int("Ingresa un numero entre 4 y 10: ", 4, 10);
  34. }
  35.  
6  Programación / Programación C/C++ / Ayuda con Directorio en c++ en: 1 Junio 2015, 04:04 am
Hola buenas! Tengo problemas con este código, estoy leyendo un libro "Estructura de datos con C++" viene un ejercicio de crear un directorio apartir de un archivo de texto, viene el codigo y solamente lo estoy copiando, el problema está (creo) al asignar la memoria no sé como arreglarlo, ojalá puedan decirme que está mal :C gracias!

Directory-Entry.h
Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. class Entrada_Directorio{
  6. public:
  7.  Entrada_Directorio(string _Nombre, string _Numero) : Nombre(_Nombre), Numero(_Numero){}
  8.  Entrada_Directorio(){}
  9.  string dar_Nombre() const {return Nombre;}
  10.  string dar_Numero() const {return Numero;}
  11.  void mod_Numero(const string &nuevo_Numero) {Numero=nuevo_Numero;}
  12. private:
  13.  string Nombre;
  14.  string Numero;
  15. };


Arreglo_PD.h
Código
  1. #include <string>
  2. #include "Directory-Entry.h"
  3.  
  4. using namespace std;
  5.  
  6. class Directorio_Tel{
  7. public:
  8.  Directorio_Tel(){} // Cuando lo pongo como  Directorio_Tel(); me da error al crear el objeto
  9.  ~Directorio_Tel(){}
  10.  
  11.  void cargar_datos(const string &nombre_arch);
  12.  string buscar_nom(const string &Nombre) const;
  13.  string anadir_modif(const string &Nombre, string &Numero);
  14.  string eliminar(const string &Nombre);
  15.  void guardar();
  16.  friend ostream& operator<<(ostream &os, const Directorio_Tel &Tel);
  17. private:
  18.  int buscar(const string &Nombre) const;
  19.  void agregar(const string &Nombre, string &Numero);
  20.  void eliminar(int num);
  21.  void realocar();
  22.  int tamano;
  23.  int capacidad;
  24.  Entrada_Directorio* Directorio;
  25.  string nombre_arch;
  26.  bool modificado;
  27. };
  28.  

Arreglo_PD.cpp
Código
  1. #include "Arreglo_PD.h"
  2. #include <fstream>
  3. #include <conio.h>
  4.  
  5. using namespace std;
  6.  
  7. void Directorio_Tel::cargar_datos(const string &nombre_arch){
  8.  this->nombre_arch=nombre_arch;
  9.  ifstream in(nombre_arch.c_str());
  10.  if (in){
  11.    string Nombre;
  12.    string Numero;
  13.    while (getline(in,Nombre,'\n')){
  14.      if (getline(in,Numero,'\n')){
  15.        cout<<Nombre<<endl;
  16.        cout <<Numero<<endl; //Coloqué esto para ver como se van agregando los nombres...
  17.        agregar(Nombre, Numero); //Desde aqui todo bien al mandar a llamar esta funcion
  18.      }
  19.    }
  20.    in.close();//No entiendo como es que (según el libro) esto logra cargar todo el archivo...
  21.  }
  22. }
  23.  
  24. string Directorio_Tel::buscar_nom(const string &Nombre) const {
  25.  int num=buscar(Nombre);
  26.  if(num!=-1){
  27.    return Directorio[num].dar_Numero();
  28.  } else {
  29.    return "";
  30.  }
  31. }
  32.  
  33. string Directorio_Tel::anadir_modif(const string &Nombre, string &Numero) {
  34.  string numero_ant="";
  35.  int num=buscar(Nombre);
  36.  if(num!=-1){
  37.    numero_ant=Directorio[num].dar_Numero();
  38.    Directorio[num].mod_Numero(Numero);
  39.  }
  40.  modificado=true;
  41.  return numero_ant;
  42. }
  43.  
  44. string Directorio_Tel::eliminar(const string &Nombre){
  45. ;
  46. }
  47.  
  48. void Directorio_Tel::guardar() {
  49.  if (modificado){
  50.    ofstream out(nombre_arch.c_str());
  51.    for(int i=0; i<tamano; i++){
  52.      out << Directorio[i].dar_Nombre() <<endl;
  53.      out << Directorio[i].dar_Numero() <<endl;
  54.    }
  55.    out.close();
  56.    modificado=false;
  57.  }
  58. }
  59.  
  60. int Directorio_Tel::buscar(const string &Nombre) const {
  61.  for(int i=0; i<tamano; i++){
  62.    if (Directorio[i].dar_Nombre()==Nombre)
  63.      return 1;
  64.  }
  65.  return -1;
  66. }
  67.  
  68. void Directorio_Tel::agregar(const string &Nombre, string &Numero) {
  69.  if(tamano==capacidad)
  70.    realocar(); //Aquí llama a la función erronea
  71.  Directorio[tamano]=Entrada_Directorio(Nombre,Numero);
  72.  tamano++;
  73. }
  74.  
  75. void Directorio_Tel::eliminar(int num) {
  76. ;
  77. }
  78.  
  79. //Esta es la funcion que da error
  80. void Directorio_Tel::realocar() {
  81.  capacidad*=2;
  82.  Entrada_Directorio* nuevo_Directorio=new Entrada_Directorio[capacidad];
  83.  getch(); //Este getch lo puse por que después de aquí se hace el error
  84.  for(int i=0; i<tamano; i++){
  85.    nuevo_Directorio[i]=Directorio[i];
  86.  }
  87.  delete[] Directorio;
  88.  Directorio=nuevo_Directorio;
  89. }
  90.  
  91. ostream& operator<<(ostream &os, const Directorio_Tel &Tel) {
  92.  for(int i=0; i<Tel.tamano; i++){
  93.    os<<Tel.Directorio[i].dar_Nombre()<<endl;
  94.    os<<Tel.Directorio[i].dar_Numero()<<endl<<endl;
  95.  }
  96.  return os;
  97. }
  98.  

main()...
Código
  1. #include <iostream>
  2. #include "Arreglo_PD.h"
  3.  
  4. using namespace std;
  5.  
  6. int main(){
  7.  Directorio_Tel D1;
  8.  D1.cargar_datos("Directorio.txt");
  9.  cout << D1;
  10. }
  11.  
  12.  

Nota: Crear el archivo de texto xD De antemano muchas gracias y espero que puedan ayudarme!  :(
7  Programación / Programación C/C++ / Menú ¿Dinámico? en C en: 5 Abril 2015, 20:22 pm
Buenas, no se si tenga algún nombre en especifico este tipo de menús, acabo de hacer esta "plantilla" por así decirlo, sólo que quiero saber si se puede simplificar más o que consejo me darían para hacer los menús así.  ;D


Código
  1. #include <iostream>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4. #include <stdio.h>
  5. #include <windows.h>
  6.  
  7. using namespace std;
  8. //Define las opciones máximas.
  9. #define opmax 3
  10.  
  11. void SetBG(int ForgC, int BackC);
  12. void menu ();
  13. int tec(int *o1,int *o2,int *o3,int *y,int *t1,int *t2,int *t3);
  14.  
  15. main ()
  16. {
  17.  while (1)
  18.  {
  19.    menu();
  20.  }
  21. }
  22. //Define la función de menú
  23. void menu ()
  24. {
  25.  SetBG(15,0);
  26.  static int o1=14,o2=0,o3=0,y=0,t1=0,t2=15,t3=15;
  27.  
  28. do{
  29.    system("cls");
  30.    cout << "\n   MENU";
  31.    cout << "\n==========";
  32.    SetBG(t1,o1);
  33.    cout << "\n\n*Opcion 1";
  34.    SetBG(t2,o2);
  35.    cout << "\n\n*Opcion 2";
  36.    SetBG(t3,o3);
  37.    cout << "\n\n*Opcion 3";
  38.    SetBG(15,0);
  39.  }while (tec(&o1,&o2,&o3,&y,&t1,&t2,&t3)!=13);
  40.  
  41.  switch (y)
  42.  {
  43.    case 1: system("cls");cout << "Ejecutando 1";
  44.            break;
  45.    case 2: system("cls");cout << "Ejecutando 2";
  46.            break;
  47.    case 3: system("cls");cout << "Ejecutando 3";
  48.            break;
  49.    default: break;
  50.  
  51.  }
  52.  getch();
  53. }
  54. //Define la función que lee las teclas usadas por el usuario.
  55. int tec(int *o1,int *o2,int *o3,int *y,int *t1,int *t2,int *t3)
  56. {
  57.    int s;
  58.    s=getch();
  59.    switch (s)
  60.    {
  61.      case char(72):  *y-=1;
  62.                      break;
  63.      case char(80):  *y+=1;
  64.                      break;
  65.      case char(13):  return 13;
  66.                      break;
  67.      default:  break;
  68.    }
  69.    switch (*y)
  70.    {
  71.      case 1: *o1=14;*o2=0;*o3=0;
  72.              *t1=0;*t2=15;*t3=15;
  73.              break;
  74.      case 2: *o1=0;*o2=14;*o3=0;
  75.              *t1=15;*t2=0;*t3=15;
  76.              break;
  77.      case 3: *o1=0;*o2=0;*o3=14;
  78.              *t1=15;*t2=15;*t3=0;
  79.              break;
  80.      default:  break;
  81.    }
  82.  
  83.    if (*y==0)
  84.      *y+=1;
  85.    if (*y>opmax)
  86.      *y=*y-1;
  87. }
  88.  
  89. void SetBG(int ForgC, int BackC)
  90. {
  91.  WORD wColor = ((BackC & 0x0F) << 4) + (ForgC & 0x0F);;
  92.  SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), wColor);
  93. }
  94.  
  95.  
8  Programación / Programación C/C++ / Serie de numeros "compleja" en: 5 Abril 2015, 03:19 am
Buenas compañeros, he estado rompiéndome la cabeza  :-X es un pequeño ejercicio pareciera muy simple pero al final fue mas de lo que pensé, supongan que tienen un conjunto (dado por el usuario) que consta de 1 hasta n(dato del usuario), la serie va aumentando de uno en uno, y cuando llega al tope de la serie a esta se le "eliminan" los últimos 2 elementos y se le aumenta uno al elemento anterior al tope de la serie así hasta que el primer numero llegue a ser el tope. les adjunto una imagen de ejemplo de como sería si el tope o conjunto fuera 5 ojalá me explique y puedan ayudarme.


 


Código:
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>

using namespace std;

main ()
{
    int n,j=0,k=0,l=1;
    cout << "Ingresa el ultimo numero del conjunto: ";
    cin >> n;
    int a[n],o[n];

    for (int i=0;i<n;i++)
    {
        a[i]=i+1;
    }

    while (a[0]!=n+1)
    {
        for (k=0;k<l;k++)
        {
            if (a[k]==n)
            {
                cout << a[k];
                l-=2;
                a[k-1]+=1;
                a[k]=a[k-1];
            }
            else if (a[k]<n)
            {
                cout << a[k];
            }

        }

        if (l<n)
        {
            l++;
        }
        cout << endl;
    }

}

Como ven CASI logro hacerla pero me salen números de más.  :-\

Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines