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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


  Mostrar Mensajes
Páginas: 1 ... 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 [79] 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 ... 235
781  Sistemas Operativos / Unix/Unix-Like / Re: ¿Que opinan de FreeBSD? en: 6 Septiembre 2016, 22:27 pm
Desde el memstick se puede instalar el entorno gráfico

Código:
pkg install gnome3

o el kde

Saludos
782  Programación / Programación C/C++ / Re: Problema y duda con incremento de punteros en: 6 Septiembre 2016, 20:24 pm
Uno es pre-incremento y el otro es pos-incremento.

El primero ++ptr hace el incremento y despues se guarda el valor resultante como parametro para printf

El segundo ptr++ primero guarda el valor como parametro de printf y luego realiza el incremento.

Saludos!
783  Programación / Programación C/C++ / Re: Tutorial de archivos en lenguaje C. - en: 6 Septiembre 2016, 17:50 pm
Hay varias formas para hacer esto.

Hay que usar la ruta absoluta o la ruta relativa.

Esto es con ruta absoluta:

Código
  1. archivo = fopen("/usr/home/usuario/directorioX/archivo.txt","r");

O con ruta relativa (relativa al directorio actual de trabajo), suponiendo que estemos ya en el directorio usuario y asumiendo que el directorioX exita:
Código
  1. archivo = fopen("./directorioX/archivo.txt","r");

Saludos!
784  Programación / Programación C/C++ / Re: Duda con realloc en: 6 Septiembre 2016, 17:34 pm
Si hay inconveniente ya que si por ejemplo en el realloc se mueve el bloque de memoria a otro lado, b va a seguir con el mismo apuntador.

Esto es

B apunta a 1000 (Direccion de memoria)
Se pide a reelloc que reasigne el espacio para agregar X cantidad adicional a la existente.
Realloc mueve el bloque que estaba en 1000 al bloque 2000 y retorna la nueva dirección de memoria
Si B no se iguala a lo que  devuelva realloc, entonces B seguira apuntado a 1000, si, ahi siguen tus valores anteriores, pero digamos que existe una variable C en la direccion 1003, entonces cuando tu escribas en tu apuntador B en esa posicion, estaras sobreescribiendo la variable C.

Ejemplo en video:



Para ejemplo esta el siguiente codigo:

Código
  1. #include<stdlib.h>
  2. #include<stdio.h>
  3.  
  4. int main() {
  5. int i = 0;
  6. int *B = NULL,*C = NULL;
  7. B = realloc(B,sizeof(int));
  8. C = realloc(C,sizeof(int));
  9. C[0] = 1000;
  10. printf("El valor de C[0] es %i\n",C[0]);
  11. realloc(B,sizeof(int)*10); //NO SE ACTUALIZA B
  12. while(i < 10) {
  13. B[i] = 1337;
  14. i++;
  15. }
  16. printf("El valor de C[0] es %i\n",C[0]);
  17. }

Salida:

Código:
El valor de C[0] es 1000
El valor de C[0] es 1337

Como vemos, por lo menos en mi computadora el valor de C es sobreescrito y termina con Error de segmento, colgandose el programa.



Saludos!
785  Programación / Programación C/C++ / Re: Duda con realloc en: 6 Septiembre 2016, 16:58 pm
 ¿Que es lo que ocurre si hago free ( b ); y continuo usando a?

al hacer free, el programa marca el segmento de memoria dado como libre y si lo sigues usando podria ser sobreescrito en cualquiero otro momento por otra variable de tu programa.

¿El valor de retorno de realloc apunta a la nueva dirección con los datos que contenía el primer argumento (en este caso a[0] debería ser 20 y tendría que tener espacio para un int más)?


Si el valore regresado es el nuevo, podria ser el mismo o no, sin embargo veo que estas asignando a la variable "a" pero sigues usando "b", en el caso de que te devuelva una direccion diferente, b ya no aputara mas a un rango de memoria "asignado". b continua con una copia vieje del apuntador.

Y en el caso del printf deberia de ser asi:

Código
  1. printf ("%p\n%p\n", a, b);


Por cierto asegurate de Inicializar la variable que le pasas por primera vez a realloc en NULL ya que es posible que contenga basura en la memoria y te marque segment fault
Tengo aqui un video que realice sobre el tema:



Saludos!
786  Programación / Programación C/C++ / Re: Tutorial de archivos en lenguaje C. - en: 6 Septiembre 2016, 16:29 pm
Es raro que te de ese error si es el mismo codigo que se uso no deberia de agregar ese enter de mas...

Sanitiza la entrada del nombre quitandole el \n o \r que quede atorado ahi:

Código
  1. char *busqueda = NULL;
  2. fgets( nombre, 80, stdin );
  3. busqueda = strstr(nombre,"\n");
  4. *busqueda = '\0';
  5.  
787  Informática / Hardware / Re: No encuentro la Virtualization Technology en la BIOS en: 5 Septiembre 2016, 21:45 pm
Es procesador amd aparece diferente el VT Es de Intel para AMD aparece como SVM y ya lo tienes habilitado.

Citar
Este documento tiene dos guías de configuración para dos diferentes plataformas de CPU:

Intel (Tecnología de virtualización de Intel, Intel VT-x)
AMD (Máquina virtual segura de AMD, AMD SVM)

Mira: https://www.qnap.com/es-es/qa/con_show.php?op=showone&cid=258

Ya todo depende de que el sotfware que estas usando sea compatible.

Saludos
788  Programación / Programación C/C++ / Re: [C] La duda eterna en: 5 Septiembre 2016, 20:29 pm
Entonces deberías de cambiar el como trabajan esas funciones.

El detalle esta en que no se deberia de llamar a main. Tendrias que tener una función que inicialize el tablero y deje todas las variajes como si nunca si hubiera jugado.

Por ejemplo para reinicializar el tablero

Código
  1. int main(){
  2. bool entrar = true;
  3. char tateti[3][3];
  4. do {
  5.  
  6. for(int i = 0; i < 3;i++){
  7. for(int j = 0; j < 3;j++){
  8. tateti[i][j] = '1' + (i*3) + j;
  9. }
  10. }
  11. //Inicilizar TATETI, Rellenar la Matriz etc...
  12.  
  13. //JUGAR
  14.  
  15. //Evaluar si el usuario quiere salir
  16. if(something == other) {
  17. entrar = false;
  18. }
  19. }while(entrar);
  20. }
  21.  

Asi en cada do el tablero estaria inicializado como la primera vez.

Tendrías que realizar algo similar para las otras variables

Saludos!
789  Programación / Programación C/C++ / Re: Ayuda para utilizar las teclas F1 F2 F3 etc. Dev C++ en: 5 Septiembre 2016, 16:34 pm
Hola acabo de validar el siguiente codigo y no funciona, YA QUE EL CMD de WINDOWS procesa algunas Teclas Especiales FX y no las pasa al programa en ejecucion.

Código
  1. #include<stdio.h>
  2.  
  3. int main() {
  4. char x;
  5. x = getchar();
  6. switch(x){
  7. case 0: //Teclas especiales... leer otra vez el valor
  8. x = getchar();
  9. printf("El valor de la tecla es %i",x);
  10. break;
  11. default: //Otras teclas.
  12. break;
  13. }
  14. }

Posiblemente funcione con getch y en Turbo C o algun otro entorno de 16 bits (NETA!?!?!?!) pero en windows 10 no funciono.

Saludos!
790  Programación / Programación C/C++ / Re: [C] La duda eterna en: 5 Septiembre 2016, 13:45 pm
Hola, no deberia de llamar a main.

Lo que se debe de realizar es un meter todo en un ciclo do-while y preguntar al usuario por continuar el juego o no.

Código
  1. int main(){
  2. bool entrar = true;
  3. do {
  4. //Inicilizar TATETI, Rellenar la Matriz etc...
  5.  
  6. //JUGAR
  7.  
  8. //Evaluar si el usuario quiere salir
  9. if(something == other) {
  10. entrar = false;
  11. }
  12. }while(entrar);
  13. }
Páginas: 1 ... 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 [79] 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 ... 235
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines