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

 

 


Tema destacado:


  Mostrar Mensajes
Páginas: 1 ... 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 [25] 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 ... 45
241  Programación / Programación C/C++ / [C](Consulta) Pregunta sobre si una característica es de ANSI C (sobre arreglos) en: 4 Junio 2016, 18:40 pm
Hola. Quería preguntar si el hecho de que un arreglo se apunte a si mismo es coincidencia o es una característica de ANSI C, es decir, la dirección del arreglo y la dirección a la que apunta el arreglo es la misma (al menos eso me pasa con MinGW-w64).

Código
  1. int arreglo[4];
  2.  
  3. if(arreglo == &arreglo) { // Siempre me da 'true'
  4.    ...
  5. }

Gracias
242  Programación / Programación C/C++ / Re: ¿Las matrices se pasan a las funciones por valor o referencia? [C] en: 4 Junio 2016, 17:27 pm
En C el paso por referencia o valor se confunde mucho. Aunque parezca extraño, todo en C se pasa por valor. Cuando pasas un arreglo por parámetros lo que pasas es una copia de la dirección al primer byte del arreglo.

Algunos interpretan que cuando una función pide una dirección de una variable la variable en sí es pasada por referencia, pues la función puede cambiar el valor de la variable, pero no se ha de confundir el paso por valor por el paso por referencia. Estas definiciones están mucho más claras en C++
243  Programación / Programación C/C++ / Re: [C] Ayuda Pirame-Arbol con * en: 2 Junio 2016, 23:49 pm
No es un printf "vacío". Lo que hace ese printf es imprimir un espacio. Es como si pusieras putc(' '). Ahí hay un espacio. En ANSI C no puedes moverte por la consola con un sistema de coordenadas. Como mucho, puedes hacer lo que se hace en el código, y es imprimir línea a línea el arbol

El árbol es el siguiente:
Código:
         
        *
       ***
      *****
     *******
    *********
   ***********
  *************

Como ves, antes de los asteriscos que forman el árbol hay espacios.

Para la primera línea, se imprimen 9 espacios, para la segunda 8, para la tercera 7... y para la última, 0 espacios. Eso es lo que hace el primer for. El segundo for imprime los asteriscos.
244  Programación / Programación C/C++ / Re: Cómo generar una matriz que se llene automaticamente de arriba hacia abajo? en: 2 Junio 2016, 00:42 am
O... podrías interpretar el arreglo bidimensional como uno unidimensional:

Código
  1. #include <stdio.h>
  2.  
  3. #define N 4  //Columnas
  4. #define M 5  //Filas
  5.  
  6. int main(){
  7. int i = 0, j;
  8. int max = M*N;
  9. int matriz_descendente[M][N],matriz_ascendente[M][N];
  10.  
  11. while(i < max){
  12. ((int *)matriz_descendente)[i] = max - i;
  13. ((int *)matriz_ascendente)[i] = i+1;
  14. i++;
  15. }
  16.  
  17. for(i = 0; i < M; i++) {
  18. for(j = 0; j < N; j++)
  19. fprintf(stdout, "%i ", matriz_ascendente[i][j]);
  20.  
  21. fputc('\n', stdout);
  22. }
  23. fputc('\n', stdout);
  24.  
  25. for(i = 0; i < M; i++) {
  26. for(j = 0; j < N; j++)
  27. fprintf(stdout, "%i ", matriz_descendente[i][j]);
  28.  
  29. fputc('\n', stdout);
  30. }
  31.  
  32. return 0;
  33. }
245  Programación / Programación C/C++ / Re: ayuda con la diagonal principal de una matriz en: 1 Junio 2016, 17:51 pm
Sinceramente, no comprendo el problema. Primero, si quieres que la matriz tenga caracteres, ¿por qué guardas los valores en un arreglo bidimensional de enteros? ¿No sería mejor usar char m[16][16]? Entonces en la asignación podrías hacer m[ i][j] = '&' o el carácter especial que quieras.

Por otra parte, no comprendo tampoco el 'else if' del código. No entiendo su función.

Si lo que quieres hacer es que la diagonal principal tenga uno de los caracteres mencionados o el elemento esté vacío, podrías crear un arreglo de caracteres como este:

Código
  1. const char caracteres[] = {'\0', '*', '/', '+', '-', '%', '&', '$'};

y cuando vayas a asignar algo a un elemento de la diagonal, podrías generar un número aleatorio entre 0 y el número de caracteres especiales:

Código
  1. matriz[i][j] = caracteres[rand()%8];
246  Programación / Programación C/C++ / Re: Funciones con argumentos OR: ¿Como? en: 1 Junio 2016, 14:34 pm
Nota aclaratoria antes de la explicación: un número al que le sigue una b, significa que está representado en binario (es para aclarar, no es porque sea así)

Lo que hace el operador | no es separar argumenots, sino que los combina sumando bit a bit. Por ejemplo, si haces 10101b | 11100b obtendrás como resultado 11101b. Básicamente, sumas bit a bit. Entonces, ¿en qué se diferencia de una suma normal? la diferencia reside en que si sumas dos bits con valor 1 no habrá carry. Es decir, si sumáramos 011b + 001b obtendríamos lo siguiente:

Código:
 011b
+001b
____
100b

Sin embargo, si aplicamos el operador | obtendríamos

Código:
 011b
|001b
____
011b

Entonces, una de las utilidades de este operador es el que mencionas. Lo que hace es asignar un bit de los 32 que tiene un unsigned int a cada bandera.

Por ejemplo, a GLUT_RGBA podríamos asignarle el primer bit, a GLUT_RGB el segundo bit, a GLUT_INDEX el tercer bit, a GLUT_SINGLE el cuarto bit...

Entonces
Código:
GLUT_RGBA   = 00000000000000000000000000000001b
GLUT_RGB    = 00000000000000000000000000000010b
GLUT_INDEX  = 00000000000000000000000000000100b
GLUT_SINGLE = 00000000000000000000000000001000b

Por lo tanto, al hacer GLUT_RGB | GLUT_INDEX, lo que haces es dar como resultado un entero con los bits de GLUT_RGBA y GLUT_INDEX activados, y así GLUT puede saber qué banderas has activado. Lo malo es que solo puedes pasar como máximo 32 banderas, puesto que un entero suele ocupar 4 bytes (32 bits).
247  Programación / Programación C/C++ / Re: [C] Eliminando Nodo de Arbol Binario en: 30 Mayo 2016, 15:56 pm
Solo te tienes que plantear: ¿de qué forma está organizado mi árbol? Una vez sabido eso, puedes establecer una regla en pseudocódigo con la cual eliminas un árbol con dos hijos.

Por ejemplo, dependiendo de la estructura del árbol, solo eliminaría la rama de la derecha, o la de la izquierda.

Sinceramente, no sé que ejemplo poner con árboles binarios y libros XDD Pon la estructura que sigue el árbol y a ver si se nos ocurren ideas para establecer las reglas de eliminación de un nodo.
248  Programación / Programación C/C++ / Re: [C] Eliminando Nodo de Arbol Binario en: 30 Mayo 2016, 14:12 pm
No soy un experto en árboles binarios (lo digo en serio), pero cuando eliminas un nodo de este, ¿no tienes que eliminar también a sus hijos, "nietos" y demás nodos conectados directamente o indirectamente al nodo a eliminar?
249  Programación / Programación C/C++ / Re: [C] (Consulta) Duda cuando un programa en C termina y memoria dinámica en: 29 Mayo 2016, 21:19 pm
Maravilloso :)

Gracias!
250  Programación / Programación C/C++ / Re: [C] (Consulta) Duda cuando un programa en C termina y memoria dinámica en: 29 Mayo 2016, 20:57 pm
Si, pero no me refiero a si los datos quedan guardados, que supongo que si. A lo que me refiero, es, si por ejemplo mi programa ha asignado 100 bytes de memoria dinámica y el programa se cierra sin haber llamado a free, entonces mi pregunta es si a otro programa se le podrían asignar esos mismos 100 bytes o no.

Básicamente, pregunto que si al hacer return en la función main habiendo llamado a malloc, esta instrucción "llama" a free liberando toda la memoria dinámica usada por el programa, o esto lo hace el sistema operativo, o tendría que reiniciar el ordenador porque esa memoria ha quedado asignada a un programa que ya se ha cerrado y "se ha perdido la referencia a esa memoria dinámica". Gracias!
Páginas: 1 ... 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 [25] 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 ... 45
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines