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


 


Tema destacado: Deseas probar algunas mejoras a la interfaz del foro? Prueba cake! acerca de


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 [11] 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ... 348
101  Programación / Programación C/C++ / Re: Tipos Abstractos de Datos en: 4 Marzo 2017, 14:01
Depende de qué pila.
En una pila generalmente podrás acceder al primer elemento, y luego, al siguiente, y así sucesivamente. Para ello tendrías que recorrer la pila manualmente e ir contando cuáles son pares y cuáles no.
Si fuera una pila en la que solo puedes acceder a la cima, entonces tendrías que crear otra pila e irla "desmontando" en ella, retirando elemento a elemento.
102  Programación / Programación C/C++ / Re: Modificar nodo en una lista dinámica. en: 4 Marzo 2017, 13:57
Pusiste: cout<<aux->next;
next es un puntero. Como aparece un 0, significa que el siguiente es NULL. Es correcto.
Tal vez quisiste poner aux->element (antes de la línea aux = aux->next, eso sí)

De todos modos, pusiste Luis como valor antiguo. No exise, así que no tiene que hacer nada.

En la imagen aparece un error 0xC0000005. De este error está bien que te acujerdes (es de los pocos que verás "normalmente"). Es un error por, generalmente, acceder a una zona de memoria que no debes.

Pero no te preocupes. En este caso es por esto:
Código
  1. aux= aux->next;
  2. cout<<aux->next;
Si aux->next es NULL, luego, en el cout, tratas de acceder a aux->next, es decir, NULL->next. Pero bueno, sería cambiar el orden de esas líneas y listo (o poner element, como puse arriba)

Y lo dicho, tienes mal la salida del menú:
Código
  1.            cout<<"What's the new value?"<<endl;
  2.            cin>>value;
  3.            if(opt==1){
  4.                int pos;
  5.                cout<<"In which position do you want to edit?"<<endl;
  6.                cin>>pos;
  7.                a.editByPos(value,pos);}
  8.            else if (opt==2){
  9.                cout<<"For which value do you want to change?"<<endl;
  10.                cin>>newName;
  11.                a.editByValue(value, newName);}
Primero pides el new value. Luego, lo pides de nuevo. El primer "nuevo valor", es el que pasas como antiguo. Revisa esos couts y cómo llamas a la función.
103  Programación / Programación C/C++ / Re: Ejecutar shellcode en C en: 3 Marzo 2017, 17:28
¿Cómo generaste el executable? Estás llamando a una función, así que tiene que ser una función. No vale un executable en formato ELF.
104  Programación / Programación C/C++ / Re: Modificar nodo en una lista dinámica. en: 3 Marzo 2017, 17:22
Tal como pusiste en el tercer intento, puedes comparar cadenas con == o != sin problema.
El primer intento, a simple vista, parece correcto. Si tal, puedes colocar couts para ver exactamente qué hace el programa y ver dónde podría estar el fallo (o depurarlo como tú quieras, vamos). Más que nada para ver por dónde pasa, que valores compara, etc.

Por cierto:
Código
  1. Nodo *aux = new Nodo(value);
  2. aux=first;
Creas ese nodo y no lo destruyes (En general, no deberías crearlo, no hace nada, le pones otro valor al momento a la variable)

En el main, pusiste:
Código
  1. cout<<"What's the new value?"<<endl;
  2. cin>>value;
Querrías decir que "old value", o "the value to find". Error sintáctico, pero cuidado no vaya a tener que ver a la hora de testearlo.
105  Programación / Programación C/C++ / Re: enteros de 12 bits en: 3 Marzo 2017, 17:00
Oh, un detalle más. El array, en vez de char, debería ser de unsigned char (sinó, si el valor coincide negativo, la transformación a short será negativa y no serviría.

Bueno, estaba revisando el tema, y la colocación de los bits puede que la haya interpretado al revés.

Puedes testear con:

Código
  1. #include <stdio.h>
  2.  
  3. void printBinary(void* address, unsigned int bytes){
  4. //for(int i=0; i<bytes; i++){
  5. for(int i=bytes - 1; i>=0; i--){
  6. int mask = 1 << 7;
  7. do{
  8. printf("%c", (((char*)address)[i] & mask? '1' : '0'));
  9. mask >>= 1;
  10. }while(mask);
  11.  
  12. //if(i+1 < bytes)
  13. if(i-1 >= 0)
  14. printf(" ");
  15. }
  16. }
  17.  
  18. int main(){
  19. unsigned char arr[2];
  20. arr[0] = 0b01101010; // 00000110 10101100
  21. arr[1] = 0b11000001; // 00001100
  22.  
  23. short result = (((short)arr[0]) << 4) | (arr[1] >> 4);
  24.  
  25. printBinary(&arr[0], 1);
  26. printf("\n");
  27. printBinary(&arr[1], 1);
  28. printf("\n");
  29. printBinary(&result, 2);
  30. printf("\n");
  31. }

Si arr[0] = AB y arr[1] = CD, la salida es ABC.
No es lo que pusiste tú al principio, pero bueno, el cambio es mínimo. Perdona la confusión :p

Citar
Por otro lado porque
 0xFF valdria 0000 0000 1111 1111 ?
Am no sé cómo responder a esto. Es así. Hexadecimal a binario.
106  Programación / Programación C/C++ / Re: Problema con visual estudio usando GetModuleFileName(); en: 2 Marzo 2017, 18:08
TCHAR puede ser wchar_t o char, según. Puedes comprobarlo con:

Código
  1. #include <typeinfo>
  2. #include <iostream>
  3. #include <windows.h>
  4.  
  5. using namespace std;
  6.  
  7. int main(){
  8. cout << "char: " << typeid(char).name() << endl;
  9. cout << "wchar_t: " << typeid(wchar_t).name() << endl;
  10. cout << "TCHAR: " << typeid(TCHAR).name() << endl;
  11. }

En mi caso, siendo TCHAR un char, me funciona correctamente.

Definiendo "UNICODE", entonces pasa a wchar_t, y el programa quedaría:

Código
  1. #define UNICODE
  2.  
  3. #include <typeinfo>
  4. #include <iostream>
  5. #include <windows.h>
  6.  
  7. using namespace std;
  8.  
  9. int main(){
  10. wchar_t buffer[256];
  11. HMODULE exe = GetModuleHandle(0);
  12. GetModuleFileName(exe, buffer, 256);
  13. wcout << buffer << endl;
  14. }

Nótese que el array ahora es de wchar_t, y que en vez de cout, utilizo wcout. En vez de array de wchar_t también podrías usar array de TCHAR. Sin embargo, te interesa saber en cada caso si es wchar_t o char, así que ponerlo manualmente te librará de problemas.
107  Programación / Programación C/C++ / Re: enteros de 12 bits en: 2 Marzo 2017, 15:49
Oh sí, me confundí. 0xFF.
108  Programación / Programación C/C++ / Re: enteros de 12 bits en: 2 Marzo 2017, 14:45
Correcto.
Como detalle extra, en vez de (x << 8) >> 8, puedes hacer x & 0xFFFF.
109  Programación / Programación C/C++ / Re: enteros de 12 bits en: 2 Marzo 2017, 13:09
Am casi pero:
arr[1] >> 4 // desplazaria los bits 4 veces hacia la derecha, quedando este valor:
0000 1100 0000 0000

Eso no es así. 1100 0001, desplazando a la derecha, queda: 0000 1100
Con lo cual, 0000 1010 0110 0000 | 0000 1100 == 0000 1010 0110 1100
110  Programación / Programación C/C++ / Re: Como resolver este error en: 2 Marzo 2017, 08:53
En primer lugar, con typedef, coo dice su nombre, defines tpos. Elevation no es un tpo e suna variable.

Luego: Elevation.TokenIsElevated. Elevation e sun DWORD, ¿cómo podría tener un campo "TokenIsElevated"?
Páginas: 1 2 3 4 5 6 7 8 9 10 [11] 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ... 348
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines