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

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 11 [12] 13 14 15 16
111  Programación / Programación C/C++ / Re: C++ - Error con memoria dinámica: ¿Puntero por referencia? en: 21 Noviembre 2013, 15:19 pm
El segundo argumento de lista.insert() debería ser un número.
Además de eso, dado que s es un puntero debes acceder los elementos así:
Código
  1. (*s)[i]
en vez de así:
Código
  1. s[i]
Otra cosa es que no tiene sentido pasar un puntero por referencia:
Código
  1. vector<string>* &s

El segundo parametro del insert no debería ser un número, ya que la lista se ha declarado como lista de string.

En cuanto a la solución dada, funciona, muchas gracias. No sé como no se me había pasado por la cabeza esto... Supongo que por la poca experiencia que tengo en memoria dinámica.

Una duda:
Código:
*s[i]
Esto no me funcionaba porque lo cogía todo como un puntero, ¿verdad? Es decir, como si fuera un vector de punteros.

Y la segunda parte en la que me dices que no tiene sentido pasar un puntero por referencia, supongo que es porque aunque se cree una copia del puntero, la posición de memoria a la que apunta será modificada igualmente, ¿cierto? Por lo que el puntero de la primera función ya apuntará al valor modificado.

Saludos
112  Programación / Programación C/C++ / Re: CODIGO FUENTE DE UNA MULTIPLICACION DE POLINOMIOS ? en: 21 Noviembre 2013, 14:06 pm
Pon el código dentro de un code-box si quieres que la gente se mire mínimamente tu código. Esto lo haces presionando sobre la lista desplegable GeSHi y seleccionando el lenguaje de programación que estás usando en tu código.

Así a simple vista lo que veo es que la función Poly no está declarada.

Saludos
113  Programación / Programación C/C++ / Re: C++ - Error con memoria dinámica: ¿Puntero por referencia? en: 21 Noviembre 2013, 13:47 pm
Muy abstracto *_*
C++ te permite el uso de variables "referencia". Son más seguras y más naturales que los punteros:

Código
  1. int cosa = 0;
  2. int &objeto = cosa;
  3.  
  4. cout<<objeto<<endl;
  5.  
  6. cosa = 1;
  7.  
  8. cout<<objeto<<endl;

...

Por otro lado si quieres insertar un elemento al principio, te vendría mejor push_front:
http://www.cplusplus.com/reference/list/list/push_front/

Al ser parte de un trabajo de la universidad, tengo varias restricciones. Entre ellas, están no poder hacer funciones que retornen tipos complejos (como lo son vectores o listas), no poder usar ciertos métodos (push_front lo tenemos prohibido tanto en listas como vectores) y el uso de & lo tengo restringido para pasar parametros por referencia en las funciones. Los métodos no deberian cambiar por temas de restricciones como ya he dicho. Lo ideal sería encontrar el problema con el puntero sin cambiar la estructura de las funciones.

No entiendo bien tú código pero un vector se puede copiar con el constructor copia:

Código
  1. vector<string> tuVector(otroVector);

Si usas un puntero, tendrías que poner eso en el new. Pero repito que no necesitas punteros para nada.

Estoy intentando pasar el contenido de una lista a un vector, por lo que el uso del constructor-copia de <vector> no serviría para este caso.

Si hay algo que no entiendes de mi código coméntalo y intentaré explicártelo lo mejor que pueda. Lo mejor para estos temas es que todos los que nos involucremos aprendamos algo nuevo.

Saludos
114  Programación / Programación C/C++ / [SOLUCIONADO] C++ - Error con memoria dinámica: ¿Puntero por referencia? en: 21 Noviembre 2013, 01:21 am
Dadas dos funciones, necesito pasar un puntero por referencia de una función a la otra para obtener los datos de una lista de strings (las dos funciones están dentro de la misma clase).
El problema viene dado a que desde un objeto de esa clase, necesito acceder a datos privados de otro objeto del mismo tipo (una lista de strings). Entonces, la solución más eficiente que se me ha ocurrido es crear un puntero de tipo vector<string> vect, pasarlo por referencia a la otra función, y en esa hacer vect = new vector<string> (N), donde N es el tamaño de la lista de la que quiero obtener sus elementos, pero me da errores de compilación y no consigo resolverlos.

Os adjunto el código de las dos funciones implicadas y el error recibido al compilar (compilo en Linux con G++):

NOTA: La primera función empieza en la línea 33, y la segunda en la línea 71, por lo que los errores saltan en las líneas marcadas con el comentario ERROR EN ESTA LÍNEA.

Código
  1. #include <vector>
  2. #include <list>
  3.  
  4. list<string> lista; //Esto está declarado en la parte privada de la clase
  5.  
  6. void Objeto::fusion_objeto(const Objeto &rev)
  7. {
  8.  //Declaro puntero
  9.  vector<string> *s = NULL;
  10.  rev.func_aux(s);
  11.  int n = s->size();
  12.  for (int i = 0; i < n; ++i) lista.insert(lista.begin(), s[i]); //ERROR EN ESTA LÍNEA
  13.  delete s;
  14. }
  15.  
  16. void Objeto::func_aux(vector<string>* &s)
  17. {
  18.  int N = lista.size();
  19.  s = new vector<string> (N);
  20.  list<string>::iterator it = lista.begin();
  21.  for (int i = 0; i < N; ++i)
  22.  {
  23.    s[i] = *it; //ERROR EN ESTA LÍNEA
  24.    ++it;
  25.  }
  26. }
  27.  

Error de la primera función:
Código:
Objeto.cpp: In member function ‘void Objeto::fusion_objeto(const Objeto&)’:
Objeto.cpp:39:69: error: no matching function for call to ‘std::list<std::basic_string<char> >::insert(std::list<std::basic_string<char> >::iterator, std::vector<std::basic_string<char> >&)’
Objeto.cpp:39:69: note: candidates are:
In file included from /usr/include/c++/4.7/list:65:0,
                 from Objeto.hpp:8,
                 from Objeto.cpp:1:
/usr/include/c++/4.7/bits/list.tcc:99:5: note: std::list<_Tp, _Alloc>::iterator std::list<_Tp, _Alloc>::insert(std::list<_Tp, _Alloc>::iterator, const value_type&) [with _Tp = std::basic_string<char>; _Alloc = std::allocator<std::basic_string<char> >; std::list<_Tp, _Alloc>::iterator = std::_List_iterator<std::basic_string<char> >; std::list<_Tp, _Alloc>::value_type = std::basic_string<char>]
/usr/include/c++/4.7/bits/list.tcc:99:5: note:   no known conversion for argument 2 from ‘std::vector<std::basic_string<char> >’ to ‘const value_type& {aka const std::basic_string<char>&}’
In file included from /usr/include/c++/4.7/list:64:0,
                 from Objeto.hpp:8,
                 from Objeto.cpp:1:
/usr/include/c++/4.7/bits/stl_list.h:1104:7: note: void std::list<_Tp, _Alloc>::insert(std::list<_Tp, _Alloc>::iterator, std::list<_Tp, _Alloc>::size_type, const value_type&) [with _Tp = std::basic_string<char>; _Alloc = std::allocator<std::basic_string<char> >; std::list<_Tp, _Alloc>::iterator = std::_List_iterator<std::basic_string<char> >; std::list<_Tp, _Alloc>::size_type = long unsigned int; std::list<_Tp, _Alloc>::value_type = std::basic_string<char>]
/usr/include/c++/4.7/bits/stl_list.h:1104:7: note:   candidate expects 3 arguments, 2 provided
/usr/include/c++/4.7/bits/stl_list.h:1125:9: note: template<class _InputIterator> void std::list::insert(std::list<_Tp, _Alloc>::iterator, _InputIterator, _InputIterator) [with _InputIterator = _InputIterator; _Tp = std::basic_string<char>; _Alloc = std::allocator<std::basic_string<char> >]
/usr/include/c++/4.7/bits/stl_list.h:1125:9: note:   template argument deduction/substitution failed:
Objeto.cpp:39:69: note:   candidate expects 3 arguments, 2 provided


Error de la segunda función:
Código:
Objeto.cpp: In member function ‘void Objeto::func_aux(std::vector<std::basic_string<char> >*&)’:
Objeto.cpp:78:13: error: no match for ‘operator=’ in ‘*(s + ((sizetype)(((long unsigned int)i) * 24ul))) = it.std::_List_iterator<_Tp>::operator*<std::basic_string<char> >()’
Objeto.cpp:78:13: note: candidate is:
In file included from /usr/include/c++/4.7/vector:70:0,
                 from Objeto.hpp:9,
                 from Objeto.cpp:1:
/usr/include/c++/4.7/bits/vector.tcc:161:5: note: std::vector<_Tp, _Alloc>& std::vector<_Tp, _Alloc>::operator=(const std::vector<_Tp, _Alloc>&) [with _Tp = std::basic_string<char>; _Alloc = std::allocator<std::basic_string<char> >]
/usr/include/c++/4.7/bits/vector.tcc:161:5: note:   no known conversion for argument 1 from ‘std::basic_string<char>’ to ‘const std::vector<std::basic_string<char> >&’

Tiene pinta de que acceda mal a las posiciones del vector dinámico. He probado con lo siguiente, pero lógicamente no funciona.
Código:
*(s[i])

¿Alguna idea?

Saludos y gracias
115  Seguridad Informática / Hacking / Re: [LIBRO] Hacking Etico - Carlos Tori Anaya en: 20 Noviembre 2013, 21:13 pm
Un libro muy interesante. Descargado y añadido a mi biblioteca.

Saludos y gracias
116  Foros Generales / Dudas Generales / Re: ¿Cómo estudio informática? en: 20 Noviembre 2013, 20:52 pm
Realmente tengo muy claro que quiero ser informático, cueste lo que cueste es algo que me gusta.

Aprender a programar, es algo que debería saber antes de entrar a la universidad o me enseñaran estando allí?

P.D Lo que más me gusta dentro del mundo de la informática es la seguridad, saber "metodos" para poder entrar en páginas u otros ordenadores, y de la misma forma saber metodos para que no puedan entrar en mi pc y todo eso.

Como puedo estudiar esto? Por donde empiezo :S

Te enseñarán programación desde cero en la universidad, pero nunca está de más tener algo de idea.

Seguridad informática no aprenderás hasta que puedas escoger especialidad y optativas, y dudo que te enseñen a "entrar en páginas u otros ordenadores". Te enseñarán técnicas de protección, de las cuales tú podrás entender como se realiza el ataque.

Un consejo: No entres en ingeniería informática sólo para "convertirte en hacker", porque te vas a llevar una decepción.

Saludos
117  Sistemas Operativos / Windows / Re: Concepto de Windows 9 es sospechosamente parecido a un escritorio de Linux en: 20 Noviembre 2013, 20:44 pm
Madre mía... es clavado... sólo hay que comparar:

http://news.softpedia.com/images/news-700/Windows-9-Desktop-Concept-Looks-Suspiciously-Like-a-Linux-One.png

http://i1-news.softpedia-static.com/images/extra/LINUX/large/ubuntu1210-large_007.jpg



Relativo, depende de dos cosas:

1.- Qué hardware gastas
2.- Qué clase de juegos buscas.

Últimamente, me estoy fijando, y cada vez salen más y más juegos que funcionan tanto en Windows como en Linux.

Mira por ejemplo Team Fortress 2. Está adaptado para ello.
Lo mismo he visto para algunos GTA. (Incluso adaptaciones de los antiguos).
Otro bombazo reciente que está a punto de ser completado ya (y salir de la fase beta)... Planetary Annihilation, supuestamente tiene o va a tener soporte nativo para Linux.

Hay bastantes ejemplos, y cada vez más... mira, echa un ojo!
http://store.steampowered.com/browse/linux/?l=spanish


Tal vez sea cuestión de darle al asunto algo más de tiempo, pero si tienes en cuenta de que los juegos viejos hay que emularlos en muchos casos (o necesitas tirar de máquinas virtuales), y que algunos de los nuevos están ya saliendo adaptados, no habrá mucha diferencia entre emular los viejos en una VM en uno u otro... y los nuevos, los tendrás con soporte nativo para tu SO, ya sea Windows, Linux (o Mac!)

Cada vez veo más juegos que tiran de librerías libres como OpenGL y que no utilizan (y a veces ni necesitan) DirectX para nada.

Todavía no es algo 100% seguro, pero tiene mucha pinta de que la cosa progresa de forma estable hacia ello. Yo tengo pensado hacer el cambio (y al menos probar) en caso de que siga así.

Lo sé, pero el número de juegos que se pueden jugar tanto en Windows como Linux es muy reducido, y la mayoría de los juegos que juego actualmente no tienen soporte en Linux. Eso si, estoy a la espera de que saquen el Steam OS, que tiene pinta de que vaya a revolucionar el tema de los SO (en cuanto a gaming).

Aquí te dejo el enlace oficial de Steam OS:
http://store.steampowered.com/livingroom/SteamOS/

Saludos
118  Programación / Scripting / Re: Sería posible hacer un clickeador? en: 20 Noviembre 2013, 20:26 pm
Sí, es posible.

Saludos
119  Programación / Programación C/C++ / Re: Ejecutable autoextraible en: 20 Noviembre 2013, 20:18 pm
Si te preocupa que editen tu cliente del juego añádele protección contra debuggers y haz verificaciones desde el servidor de las variables más importantes de éste (por ejemplo, el dinero). No creo que por "añadirlo" a tu ejecutable sea más seguro, y tampoco sé si eso es posible sin utilizar herramientas de empaquetado como Winrar.

Saludos
120  Programación / Programación C/C++ / Re: ayuda con vectores en: 19 Noviembre 2013, 21:58 pm
Hola a todos.
Quiero dejar aclarado por si todavía no se percataron, yo siempre pongo la misma duda en por lo menos 3 foros (exactamente el mismo texto) siempre me ha dado muy buen resultado, es una buena manera de recabar  la experiencia de muchos.-
Si después de esto me quieren tirar la oreja o darme de baja del foro lo acepto pero siempre voy a defender esta postura.-


Saludos.
Daniel


Y es una postura muy correcta en mi opinión. Lo que no es serio para nada, es hacer una petición de este tipo sin ni siquiera preocuparse de borrar todo el formato del foro del que lo ha copiado. Y con formato me refiero a todo esto:

Citar
Dev - C++ - ayuda!!
Volver
Agregar Nota
<<>>
  Imprimir facebook
twitter
Vista:
Mensajes realizados hoy (No estaban la última vez que entraste)ayuda!!
javier (18/11/2013 20:35:57)6 visitas
0 respuesta
Me gusta: Está pregunta es útil y esta clara
0
No me gusta: Está pregunta no esta clara o no es útil
 
Asunto:   ayuda!!
Autor:   javier (1 intervención)
Fecha:   18/11/2013 20:35:57

Saludos
Páginas: 1 2 3 4 5 6 7 8 9 10 11 [12] 13 14 15 16
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines