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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


  Mostrar Mensajes
Páginas: 1 ... 9 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 ... 161
231  Programación / Programación C/C++ / Re: Grafos en: 10 Enero 2019, 19:53 pm
Para resolver estas cosas tal vez te interese aprender sobre diagramas de Entidad-Relación y el modelo relacional. Son herramientas muy usadas en el diseño de base de datos y sirven bastante para todas estas cosas. Son una forma de abstraer el mundo real en relación entre entidades (clases y structs en C++).
232  Programación / Programación C/C++ / Re: Ciclos anidados en: 9 Enero 2019, 09:10 am
Pero aquí lo de bucle anidado es porqué hay dos for, pero el del i es cómo si no existiera.

Lo vemos
Código
  1. #include <stdio.h>
  2.  
  3. int main() {
  4.    int k=0, l=1;
  5.    for (int j=0; j<=9; j++) {
  6.        printf("%d,%d\n", j, l);
  7.        k++;
  8.        if(k==2) {
  9.            l++;
  10.            k=0;
  11.        }
  12.    }
  13. }
233  Programación / Programación C/C++ / Re: Ayuda no entiendo donde esta el error en: 8 Enero 2019, 21:35 pm
Así no se leen cadenas de caracteres. Ni tampoco se hacen así las cadenas de caracteres.
Sobre tu función ya la miraremos cuándo hayas arreglado todo lo referente a la adquisición de la cadena.
234  Programación / Programación C/C++ / Re: CONSULTA en: 7 Enero 2019, 07:16 am
Busca 'PDF structure internals' en Google y te aparecerán links con todo lo que necesitas para manejar PDFs.
235  Programación / Programación C/C++ / Re: pasar procedimientos recursivos a funciones en bst en: 6 Enero 2019, 09:28 am
Entiendo qué quieres juntar las dos en una sola función.
236  Programación / Programación C/C++ / Re: Separar arreglo en numeros primos y en otro multiplos de 3 en: 6 Enero 2019, 03:44 am
Qué es lo que no te sale?
237  Programación / Programación C/C++ / Re: Ciclos anidados en: 6 Enero 2019, 00:16 am
No se puede realizar con ciclos anidados pues cada vez que el ciclo exterior avanza una vez el interior hace todo el recorrido.

Esto tiene cara de un único ciclo con dos variables.
238  Programación / Programación C/C++ / Re: Ayuda en funciones en estructuras en: 5 Enero 2019, 02:10 am
Creo que pregunta por los métodos.
239  Programación / Programación C/C++ / Re: función en c en: 4 Enero 2019, 23:23 pm
Sobre lo que estás preguntando se llama guarda y es la condición por la cual debe terminar la recursividad. Si no existiera estaría entrando en la función hasta quedarse el programa sin memoria.

En las funciones hay dos formas de terminarlas:
1. Cuando llegan al final.
2. Cuando encuentran una sentencia return.

Lo que va a pasar cuando se llegue al final de la cadena es que la función va a regresar sin hacer nada dándole el control a la llamante.
Esa función continuará después de la llamada y escribirá el carácter, en este caso es el último de la cadena. Hecho esto llegará al final y le devolverá el control a su llamante.
Esa función, igual que la anterior, continuará después de la llamada escribiendo el carácter de la cadena, en su caso el penúltimo.
Las funciones irán escribiendo el carácter que les toca y devolviendo el control a su llamante hasta llegar a la primera que, una vez termine, continuará con la ejecución natural del programa.
240  Programación / Programación C/C++ / Re: Arreglos como parametros ... en: 3 Enero 2019, 23:27 pm
Para entender eso debes tener muy claro qué es una variable.

Una variable es una zona de memoria que alguien te ha dejado para que pongas cosas dentro. ¿Puedes cambiar esa zona de memoria? No, pero puedes cambiar lo que hay dentro.

Para verlo veamos un escalar, un int (4 bytes). Supongamos que el sistema te da la dirección 100 para tu variable, podrías hacer esto:
100: 0x00
101: 0x01
102: 0xFF
103: 0x00

Cómo puedes intuir el cambiar la dirección de los datos es absurdo, la memoria es la que es, es algo físico. Si acaso puedes copiar el contenido en otro sitio pero tienes que dar otro nombre a ese otro sitio para referenciarte a él.

Vayamos ahora a por los punteros, esas variables que contienen direcciones de memoria. Al igual que los escalares son variables y esto significa que están ancladas en una dirección de memoria. De la misma forma contienen números pero estos representan otras direcciones de memoria, y por contener direcciones de memoria tienen una aritmética especial; por lo demás son como escalares.

Las variables (escalares y punteros) devuelven su contenido, es decir: dónde C/C++ vea su nombre lo traducirá por su contenido.

Los arrays son una bestia extraña, una quimera. Un array es una ristra de elementos iguales contiguos. Supongamos un array de cuatro int y que éste empieza en la dirección de memoria 100:
100: 0x123847
104: 0x1038
108: 0x77483
112: 0x0

Cómo ves, al igual que los escalares cada elemento ocupa una dirección física que no se puede cambiar. Por tanto a un array no se le puede cambiar de dirección.
Pero a diferencia de los escalares están compuestos de muchos objetos, no sólo uno así que ¿cómo haces referencia a ellos? Para eso podrías hacer que el nombre del array devolviera su dirección de inicio y aplicar aritmética de punteros para referenciar a cada elemento. Así si tu array se llama miArray tendrías que:
miArray: devuelve 100 (igual que miArray+0)
miArray+1: devuelve 104 (recordar que un tipo entero son 4 bytes, aquí 100, 101, 102 y 103)
miArray+2: devuelve 108
miArray+3: devuelve 112

Y ya que tienen aritmética de punteros se dereferencian direcciones de memoria cómo los punteros:
*(miArray+2): devuelve 0x77483
En notación de array:
miArray[2]: devuelve 0x77483

Y esta es la razón por la que los índices de array empiezan por 0. Por otra parte y muy a tener en cuenta: el nombre del array devuelve su dirección de inicio.

Respondiendo a tu pregunta:
Ya has visto que los arrays devuelven su dirección por tanto cuándo pasas por parámetro un array lo que haces realmente es pasar su dirección así que no hay copia por valor de todo el array.

Pero la cosa se complica. ¿Qué ocurre cuándo pasas un array? Verás que el argumento del receptor debe dimensionar todas las dimensiones menos la primera. Algo así:
Código:
void miFuncion(int cubos[][100][100][100]);
El array recibe una colección de cubos.
¿Porqué la primera dimensión no está definida? Pues porque puede que tengas una colección de 1 de 100 o de 1000 cubos.
¿Y porqué las otras dimensiones sí están especificadas? C/C++ debe saber cuánto tiene que moverse por memoria cuándo des un índice. Por ejemplo:
La diferencia de memoria entre cubos[0] y cubos[1] es (1-0)*sizeof(int)*100*100*100.
La diferencia de memoria entre cubos[0][0][3][0] y cubos[0][0][5][0] es (5-3)*sizeof(int)*100.
Páginas: 1 ... 9 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 ... 161
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines