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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


  Mostrar Temas
Páginas: 1 2 3 4 [5] 6
41  Programación / Programación C/C++ / ifstream y while para leer lineas.. pregunta sobre sintaxis.. en: 2 Marzo 2019, 02:18 am
Hola nuevamente por aquí..

Código
  1.  
  2. #include <fstream>
  3.  
  4. void Extraer(){
  5.  
  6.     int x = 0;
  7.     int y = 0;
  8.  
  9.     ifstream fromFile;
  10.     fromFile.open("file.txt");
  11.     if (fromFile.is_open()){
  12.  
  13.          while (fromFile >> x >> y){      // *
  14.  
  15.           }
  16.  
  17.  
  18.     }
  19.  
  20. }
  21.  

Mi duda especificamente va en la linea donde se lee:

Código
  1. while (fromFile >> x >> y){
  2. }
  3.  

Como se lee esa sintaxis?, entiendo que dentro del parámetro de un while va una expresión por lo general del tipo bool... pero la expresión de extraccion que se ve ahi no me hace sentido como argumento... 

Saludos y gracias de antemano.
42  Programación / Programación C/C++ / Funciones Friends y Namespaces.. en: 1 Marzo 2019, 00:16 am
Hola!

Me parece extraño que tenga que definir una función friend anteponiendo el espacio de nombre si se supone que lo dejé estipulado al principio:

Código
  1. //Persona.h
  2.  
  3. namespace Agenda{
  4.   class Persona{
  5.  
  6.      int edad;
  7.      friend int f_obtenerEdad();
  8.  
  9.   };
  10. }
  11.  

Código
  1. //Persona.cpp
  2. #include "Persona.h"
  3. using namespace Agenda;
  4.  
  5. int f_obtenerEdad(Persona & _p){
  6.   return _p.edad;          //Error, edad es privado
  7. }
  8.  


En cambio, si lo hago asi:
Código
  1. //Persona.cpp
  2. #include "Persona.h"
  3. using namespace Agenda;
  4.  
  5. int Agenda::f_obtenerEdad(Persona & _p){
  6.   return _p.edad;         //Esto lo asimila correctamente
  7. }
  8.  


Tenía entendido que si yo escribía "using namespace X", no era necesario llamar a los miembros de un objeto usando X:: , pero en este caso del friend no se cumple, por qué será?

Gracias..
43  Programación / Programación C/C++ / Error C2360: la inicialización de edad se omite por la etiqueta case en: 26 Febrero 2019, 00:58 am
Que tal..

Este error sinceramente no le hallo lógica, imagino que debe ser un tipo de política de c++...

Código
  1.  
  2. void FuncionA(int indice){
  3.  
  4.     switch (indice){
  5.  
  6.          case 0:
  7.               int edad = 0;        //Error C2360
  8.               //hacer otra cosa...
  9.  
  10.          case 1:
  11.               //hacer otras cosas...
  12.  
  13.     }
  14.  
  15. }
  16.  


Código
  1.  
  2. void FuncionA(int indice){
  3.  
  4.     switch (indice){
  5.  
  6.          case 0:
  7.               int edad;        
  8.               edad = 0;       //Esto no da error
  9.  
  10.          case 1:
  11.               //hacer otras cosas...
  12.  
  13.     }
  14.  
  15. }
  16.  


Debo declarar siempre sin definir una variable cuando entro al cuerpo de un case ?

44  Programación / Programación C/C++ / c++ bajo nivel en: 25 Febrero 2019, 17:50 pm
Hola, es posible acceder al hardware de video usando c++ o necesito implementar asm?

Algún ejemplo de bajo nivel que me puedan dar? (no de video, sino de cualquier cosa)
Eso es más que nada para ver que tan bajo nivel puede llegar c++
Gracias
45  Programación / Programación C/C++ / punteros como parametros de funciones que no retornan nada... buena idea? en: 23 Febrero 2019, 16:08 pm
Según he venido entendiendo hasta ahora, si yo creo un puntero, éste intenta localizar memoria en el espacio dinamico…. estos espacios de memoria deben ser liberados, pero que pasa en el siguiente caso?

Código
  1. void Persona::IngresarNombre(const char * nombre){
  2.     strcpy(this->nombre, nombre);
  3.  
  4.     delete nombre;   //Es esto necesario?
  5. }
  6.  


Que sucede con ese puntero a char que está como parámetro?, se elimina solo o yo debo eliminarlo también?

o es mejor idea esto?:

Código
  1. void Persona::IngresarNombre(const char nombre[16]){
  2.     strcpy(this->nombre, nombre);
  3. }
  4.  
Gracias.
46  Programación / Programación C/C++ / tiene sentido un puntero para uso como arreglo con una dimensión entregada? en: 22 Febrero 2019, 23:12 pm
Código
  1.  
  2. int main (){
  3.  
  4.        int * numero = new int[49];
  5.        numero[151] = 750;
  6.        std::cout << numero[151] << std::endl;   //esto imprime 750 sin problemas...
  7.  
  8.  
  9.        return 0;
  10. }
  11.  

Como verán, estoy creando un puntero con una dimensión de 49 espacios de memoria del tipo int, luego estoy asignando un valor a un indice que está mas allá del rango (49) y luego lo imprimo en pantalla....  lo curioso es que me funciona, por que ?... es que acaso es lo mismo declarar:

Código
  1. int * numero = new int[49];
  2.  

que

Código
  1. int * numero = new int;
  2.  

que opinan?..
Saludos..
47  Programación / Programación C/C++ / Puntero e indice 0 de ese puntero... en: 22 Febrero 2019, 02:22 am
Hola!

Estoy intentando crear una agenda y me he topado con algo que me parecio extraño:

Código
  1. //Persona.h
  2. class Persona{
  3.  
  4.       int edad;
  5.  
  6. public:
  7.       Persona() : edad(60){};
  8.       int LeerEdad() const {
  9.              return this->edad;
  10.       }
  11.  
  12. };
  13.  

Código
  1. //main.cpp
  2. #include <iostream>
  3. #include "Persona.h"
  4.  
  5. Persona * personas;
  6.  
  7. int main (){
  8.  
  9.       personas = new Persona;
  10.  
  11.       std::cout << personas->LeerEdad() << std::endl   //Esto imprime 60
  12.  
  13.       std::cout << personas[0].LeerEdad() << std::endl //Esto imprime 223525
  14.  
  15.       return 0;
  16.  
  17. }
  18.  

Me parecía haber leido en alguna parte que personas y personas[0] apuntaban al mismo segmento de memoria..... pero están imprimiendo dos valores diferentes... No son lo mismo?  El uso que quiero darle a "personas" es el de un arreglo.


Saludos y gracias.
48  Programación / Programación C/C++ / Sobrecarga de operador << solo me compila si uso la palabra "friend" en: 13 Febrero 2019, 04:44 am
Buenas amigos..

Tenía entendido que la palabra reservada "friend" permitía acceder a todas mis variables privadas de mi clase desde fuera, es como una excepción a la regla, para friend sería todo publico.

He querido utilizar el operador sobrecargado << para que mi clase pueda ser impresa por la salida estándar.

Esto es lo que tengo:

Código
  1. //Persona.h
  2. #include <iostream>
  3.  
  4. class Persona{
  5.  
  6.     char * nombre;
  7.     int edad;
  8.  
  9. public:
  10.  
  11.     Persona();
  12.     ~Persona();
  13.  
  14.     //La siguiente linea da error si no coloco la palabra friend al principio
  15.     std::ostream & operator<<(std::ostream & os, Persona & _estaPersona);
  16.     char * LeerNombre() const;
  17.     int LeerEdad() const;
  18.     void InsertarNombre(const char * _nuevoNombre);
  19.     void InsertarEdad(const int _nuevaEdad);
  20.  
  21. };
  22.  


Código
  1. //Persona.cpp
  2.  
  3. #include "Persona.h"
  4.  
  5. using namespace std;
  6.  
  7. //Sobrecarga operador
  8. ostring & operator<<(ostring & os, const Persona & _estaPersona){
  9.     os << "Nombre : " << _estaPersona.LeerNombre() << endl;
  10.     os << "Edad     : " << _estaPersona.LeerEdad() << endl;
  11.     return os;
  12. }
  13.  
  14. char * Persona::LeerNombre(){
  15.     return nombre;
  16. }
  17.  
  18. int Persona::LeerEdad(){
  19.     return edad;
  20. }
  21.  
  22. void Persona::InsertarNombre(const char * _nuevoNombre){
  23.     strcpy(nombre, _nuevoNombre);
  24. }
  25.  
  26. void Persona::InsertarEdad(const int _nuevaEdad){
  27.     edad = _nuevaEdad;
  28. }
  29.  
  30.  

Código
  1. //main.cpp
  2. #include Persona.h
  3.  
  4. int main (){
  5.     Persona p;
  6.     p.InsertarNombre("ElHacker");
  7.     p.Edad(37);
  8.  
  9.     std::cout << p << endl;
  10. }
  11.  

Lo que no entiendo, es que según la definición de friend, esto no me calza, yo no quiero acceder desde fuera a una propiedad privada, solo estoy intentando acceder a LeerNombre() y LeerEdad() que son publicas, no debería necesitar colocar friend... es que acaso friend con el operador trabaja de forma distinta?

Gracias de antemano.
49  Programación / Programación C/C++ / Punteros fantasmas... (asi le puse yo).. en: 10 Febrero 2019, 22:43 pm
Hola!
Me he topado con el siguiente escenario:

Código
  1.  
  2. //En este fragmento al terminar la función, se destruye el contenido de suma y retorna null o vacío, y el puntero suma sigue existiendo en memoria....
  3. int RetornaUnaSuma(int a, int b){
  4.  
  5.     int * suma = new int;
  6.     *suma = a+b;
  7.     return *suma;
  8. }
  9.  
  10. //Aqui intento retornar un puntero creado dentro de la misma función...
  11. int * RetornaUnaSuma(int a, int b){
  12.  
  13.     int * suma = new int;
  14.     *suma = a+b;
  15.     return suma;
  16.  
  17.     //pero al terminar la función, se destruye el contenido y retorna una dirección de memoria sin contenido, el puntero sigue existiendo..
  18. }
  19.  
  20.  

Según yo es mala práctica declarar punteros que quieras retomar dentro de una función o un ámbito...  bueno aparte de mala practica no funciona el retorno...Es como lo pienso?...

Probablemente se pueda devolver punteros cuando éstos mismos ingresan como argumento...

La función sería:

Código
  1. //Segun yo esto debe funcionar...
  2. int * RetornaUnaSuma(int * pSuma, int a, int b){
  3.  
  4.     *pSuma = a+b;
  5.     return pSuma;
  6.  
  7. }
  8.  


Que opinan...
Saludos.
50  Programación / Programación C/C++ / Llevo 1 año estudiando C++ aprox., y aún no hallo sentido a los punteros.. en: 10 Febrero 2019, 00:43 am
Hola amigos..

pues tal como se lee en el título, seguramente me creerán idiota o algo por el estilo (asumo que es muy probable que sea así después de hacer esta pregunta)..

Creí que los punteros tenían un poder enorme en la programación, referencia memoria en vez de valor, supuse que era la opción perfecta para interactuar con muchos datos, pero después de ver que los arreglos y matrices internamente se procesan como punteros (pues son las reglas que conozco al menos de manejar mucha información) no le hallé mas sentido a los punteros, es decir... si tengo :

Código
  1.  
  2. int numero = 5;
  3.  
  4. void ConsultarNumero(){
  5.   cout << "Numero es : " << numero << endl;
  6. }
  7.  
  8. void ModificarNumero(){
  9.    numero = 6;
  10. }
  11.  
  12. void SumarUnoAlNumero(){
  13.     numero++;
  14. }
  15.  
  16.  

En vez de :

Código
  1.  
  2. int main (){
  3.   int * numero = new int;
  4.   *numero = 5;
  5.   consultarNumero(numero);
  6.   modificarNumero(numero, 6);
  7.   sumarUnoAlNumero(numero);
  8.  
  9. }
  10.  
  11. void consultarNumero(int * _numero){
  12.     cout << "El numero es : " << *_numero << endl;
  13. }
  14.  
  15. void modificarNumero(int * _numero, int _nuevoNumero){
  16.    *_numero = _nuevoNumero;
  17. }
  18.  
  19. void sumarUnoAlNumero(int * _numero){
  20.    *_numero++;
  21. }
  22.  
  23.  
  24.  


Como verán, simplemente reemplacé el puntero por una variable global, de todas formas sin puntero estoy accediendo a una variable compartida sin la necesidad de consultar su memoria...

Alguien me podría guiar sobre el uso de punteros?
Gracias de antemano.
Páginas: 1 2 3 4 [5] 6
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines