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

 

 


Tema destacado:


  Mostrar Mensajes
Páginas: 1 ... 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 [97] 98 99 100 101 102
961  Programación / Programación C/C++ / Re: Ayuda con programa en: 22 Noviembre 2018, 22:28 pm
No estás usando la función <abrir>, así es imposible que funcione. Además de eso no sé si el fallo es ese o es otra cosa entonces si te sale algún error de compilación inclúyelo en el mensaje.

PD: Por favor, no usar <conio.h>, ni <system("pause")> y creo recordar que la librería <istream> no es necesaria.
962  Programación / Programación C/C++ / Re: [C] Elementos de un array en: 22 Noviembre 2018, 04:09 am
He editado esto en mi post anterior pero como veo que habéis respondido mientras lo hacía, lo pregunto de nuevo para que no quede en el olvido:
Citar
Y por último, sabéis por qué si citas un código en C aparecen "&#160" en la tabulación del código?? Eso en códigos entre etiquetas cpp no pasa. Y hay alguna forma de usar el tabulador?? Ya que eso de tener que usar muchos espacios para tabular bien el código... :-\
963  Programación / Programación C/C++ / Re: [C] Elementos de un array en: 22 Noviembre 2018, 04:01 am
Por que no hacerlo al mismo tiempo?

Código
  1. #include <stdio.h>
  2. int main(void){
  3.    printf("Ingresar cantidad de elementos: ");
  4.    int r;
  5.    scanf("%d", &r);
  6.    int i = 0;
  7.    int array[r],A[r];
  8.    do {
  9.          array[r - 1] = r;
  10.          A[i] = r;
  11.          r = r- 1;
  12.          ++i;
  13.    } while (r > 0);
  14.    printf("Lista: \n");
  15.    for(r = 0; r < i; ++r)
  16.         printf("%d \t", array[r]);
  17.    printf("\nLista: \n");
  18.    for(r = 0; r < i; ++r)
  19.         printf("%d \t", A[r]);
  20.    return 0;
  21. }

Aunque hay un pequeño error, como la serie de números va decreciendo se van guardando los valores desde el final del array hacia el principio. Con eso corregido quedaría así:
Código
  1. do {
  2.        array[r - 1] = r;
  3. A[r - 1] = r; // Esta era la instruccion que guardaba el array <A> al reves que el array <array>
  4.        r = r- 1;
  5.        ++i;
  6. } while (r > 0);

PD: Un tanto extraña y poco convencional esa forma de almacenar un array aunque funcionar claro que funciona. Una alternativa:
Código
  1. #include <stdio.h>
  2.  
  3. int main(void){
  4.    printf("Ingresar cantidad de elementos: ");
  5.    int r;
  6.    scanf("%d", &r);
  7.    int i = 0;
  8.    int array[r],A[r];
  9.  
  10.    for(size_t i = 0; i < r; i++){
  11.        array[i] = i;
  12.        A[i] = i;
  13.    }
  14.  
  15.    printf("Lista: \n");
  16.    for(size_t i = 0; i < r; i++)
  17.        printf("%d \t", array[i]);
  18.  
  19.    printf("\nLista: \n");
  20.    for(size_t i = 0; i < r; i++)
  21.        printf("%d \t", A[i]);
  22.  
  23.    return 0;
  24. }

Edit: De esta manera evitas modificar el tamaño de <r> ya que representa el tamaño del array. Aunque no se va a modificar el tamaño por modificar <r> pero si el código fuese más grande puedes pensar que <r> vale el tamaño del array y como lo has modificado no es así y podrías tener problemas.

Y por último, sabéis por qué si citas un código en C aparecen "&#160" en la tabulación del código?? Eso en códigos entre etiquetas cpp no pasa. Y hay alguna forma de usar el tabulador?? Ya que eso de tener que usar muchos espacios para tabular bien el código... :-\
964  Programación / Programación C/C++ / Re: [C] Elementos de un array en: 22 Noviembre 2018, 03:28 am
Cuando declaras un array se puede inicializar directamente si conoces todos sus datos, es decir, puedes hacer esto:
Código
  1. int array[TAM] = {1,2,3,4,5,...};

Pero en tu caso que no puedes conocer esos valores antes de la ejecución del programa, tienes que declarar el nuevo array vacío y copiar después todos los valores. Como esta copia se hace después de haber declarado el nuevo array, entonces ya no puedes hacer la forma rápida que sería (en tu caso):
Código
  1. int array[TAM] = {1,2,3,4,5,...};
  2. int nuevoArray[TAM] = array;  // Esto no es correcto.

En vez de eso, debes hacer una copia elemento a elemento (como ejemplo):
Código
  1. int array[10] = {0,1,2,3,4,5,6,7,8,9};
  2. int nuevoArray[10];
  3. for(size_t i = 0; i < 10; i++)
  4.    nuevoArray[i] = array[i];

Con esto tendrías el siguiente resultado:
array[10] = {0,1,2,3,4,5,6,7,8,9}
nuevoArray[10] = {0,1,2,3,4,5,6,7,8,9}

Espero haberte ayudado con esto.
965  Programación / Programación C/C++ / Re: Programa C++ Tengo una duda con respecto a este programa. en: 22 Noviembre 2018, 03:21 am
Lo siento pero no, más que nada porque nunca me he parado a buscar códigos ajenos ya que no es algo que me guste mucho si no es para ayudar a otra persona. Pero si no encuentras nada siempre puedes coger cualquier código de internet y hacerte tú mismo la pregunta o intentar comprender su funcionamiento sin ejecutarlo y después lo ejecutas para ver si estabas en lo correcto.

En este mismo foro en otros posts he visto que hay algunos códigos que trabajan con temas matemáticos que al fin y al cabo creo que son los mejores para hacer lo que quieres hacer ya que la dificultad no está en las instrucciones que se usan sino en ver por qué se están usando.

PD: Yo mismo he escrito algunos trozos de código para resolver algunos de estos posts que te comento. Si te interesa el programa entero o que te mande alguno de los programas que tengo yo puedes decírmelo por un mensaje privado y te lo puedo mandar si te sirve de ayuda.
966  Programación / Programación C/C++ / Re: [C] Elementos de un array en: 22 Noviembre 2018, 03:11 am
Creo que no entiendo bien la pregunta porque ese programa que tienes si lo ejecutas en introduces 10, ya te está creando un conjunto (que no se llama A, se llama array) en el que tienes los números almacenados en el orden que tú quieres que estén.
Entonces no sé dónde está el problema :huh:

Igual te refieres a que quieres guardar todo el contenido de <array> en otra variable <A>. Es eso??
967  Programación / Programación C/C++ / Re: Programa C++ Tengo una duda con respecto a este programa. en: 22 Noviembre 2018, 02:48 am
Claro porque lo que hace es guardar los elementos que están tanto en <valores> como en <numeros> y en <valores> tienes los múltiplos de 2 y en <numeros> los múltiplos de 3. Y los números que están en ambos son entonces múltiplos de 2 y de 3 y eso por definición son los múltiplos de 6.
968  Programación / Programación C/C++ / Re: Programa C++ Tengo una duda con respecto a este programa. en: 22 Noviembre 2018, 01:48 am
Citar
Creo que ahora ya vas viendo lo que va a hacer: ¿Cuándo va a entrar al <if> que hay dentro del <for>? Cuando un valor esté en <valores> y en <numeros>. Y como en <valores> tenemos los múltiplos de 2 y en <numeros> tenemos los múltiplos de 3... Que va a haber en <soluciones>? :silbar: Exacto, los múltiplos de 2 y 3 al mismo tiempo, es decir, los múltiplos de 6.

Aquí lo tienes, es decir, sí que va a entrar en el <if>. Simplemente que el proceso explicado brevemente sería:
<i = 1> <j = 1> No entra.
Se repite el <for> hasta el último valor de j (no va a entrar en ninguna repetición).
<i = 1> <j = 99> No entra.

Sale del <for>, se incrementa i y con <goto iterar> vuelves a empezar el <for> pero ahora con <i = 2>
<i = 2> <j = 1> No entra.
Se repite el <for> hasta el último valor de j (no va a entrar en ninguna repetición).
<i = 2> <j = 99> No entra.

Sale del <for>, se incrementa i y con <goto iterar> vuelves a empezar el <for> pero ahora con <i = 3>
<i = 3> <j = 1> No entra.
EXCEPCIÓN: <i = 3> <j = 2> ENTRA. Entonces <z = 1> solucion[1] = valores[3] = 6
Se repite el <for> hasta el último valor de j (ya no entra más veces).
<i = 3> <j = 99> No entra.

Sale del <for>, se incrementa i y con <goto iterar> vuelves a empezar el <for> pero ahora con <i = 4>. Entonces valores[4] = 8 (no va a entrar)
Sale del <for>, se incrementa i y con <goto iterar> vuelves a empezar el <for> pero ahora con <i = 5>. Entonces valores[5] = 10 (no va a entrar)

Sale del <for>, se incrementa i y con <goto iterar> vuelves a empezar el <for> pero ahora con <i = 6>. Entonces valores[6] = 12
Ahora si va a entrar cuando j sea 4 ya que numeros[4] = 12.

Es decir el programa coge la posición <i> de <valores> y la compara con todas las posiciones de <números>, si coincide alguno lo mete en <solucion> y cuando lleg al final de <numeros> incrementa <i>; entonces ahora compara la siguiente posición de <valores> con todas las posiciones de <numeros> y si coincide alguno lo mete en <solucion>.
Es decir, que el programa compara todos los elementos de <numeros> con cada elemento de <valores>. Al final lo que hace es comparar los dos vectores enteros.

PD: Cuando digo que vuelve a entrar en el <for>, por lo que he explicado antes, j vuelve a empezar desde 1.
969  Programación / Programación C/C++ / Re: Programa C++ Tengo una duda con respecto a este programa. en: 22 Noviembre 2018, 00:54 am
Continuando con el analisis  y la parte que no entiendo es la siguiente.
Código
  1. i = 1;
  2. iterar:
  3. for (j = 1; j <= 100; j = j + 1){
  4.    if (valores[i] == numeros[j]){
  5.        solucion[z] = valores[i];
  6.        z = z + 1;
  7.    }
  8. }
  9. if (i <= 100){
  10.    i = i + 1;
  11.    goto iterar;
  12. }

En esta parte basicamente segun lo que veo es que voy a empezar con ciclo for desde que j=1, hasta que j<=100 , y cual con un if voy  a comparar los arreglos valores y numeros[j] , y si hacemos la primera comparacion tengo que  :

valores[i=1] = 2  y numeros[j=1] = 3 cual la condicion del if no deberia de cumplirse , asi que pasaria al siguiente if 


Código
  1. if (i <= 100){
  2.    i = i + 1;
  3.   goto iterar;
  4. }

  En este if como i=1 es menor o igual que 100 , se cumple la condicion y voy a iterar i , y posterior redireccionarme con el goto iterar hasta este for.

Código
  1. iterar:
  2. for (j = 1; j <= 100; j = j + 1){
  3.    if (valores[i] == numeros[j]){
  4.        solucion[z] = valores[i];
  5.        z = z + 1;
  6.    }
  7. }

  Como itero j y i , quedarian i=2 y j=2 , y se haria de nuevo la comparacion  pero tendria lo siguiente

valores[i=2] = 4 y en numeros[j=2] = 6 , lo cual de nuevo no se cumpliria la condicion del if y asi sucesivamente  y siempre se harian las comparaciones hasta que i=99 lo cual que esa condicion  nunca se cumpliria , no se me equivoco en algo dime porfavor.

Todo el análisis que no aparece en la cita es correcto, está bastante bien. Pero a partir de aquí es donde tienes un error así que vamos a ello.
Voy a ponerte un ejemplo para que veas a donde quiero llegar:
Código
  1. iterar:
  2. cout << "Se repite la iteracion" << endl;
  3. for (j = 1; j <= 100; j = j + 1){
  4.    if (valores[i] == numeros[j]){
  5.        solucion[z] = valores[i];
  6.        z = z + 1;
  7.    }
  8. }
  9. if (i <= 100){
  10.    i = i + 1;
  11.    goto iterar;
  12. }

Si pruebas a ejecutar esto en lugar del código original (solo he añadido una línea después de la etiqueta iterar) verás el porqué del error y el porqué de que no se recomiende usar etiquetas y <goto> para los saltos. El sentido de añadir esa frase antes del <for> es que cada vez que se ejecute <goto etiqueta> se va a repetir esa frase en pantalla... Por qué? :huh: Vamos a analizarlo de nuevo sin la instrucción que he añadido que es meramente demostrativa:
El comienzo que has hecho es correcto, antes de llegar al <for> tienes <i = 1>, entonces (importante) ENTRAS en el <for> por lo tanto <j = 1>. Comparamos:
valores[i = 1] = 2
numeros[j = 1] = 3
Son distintos, entonces otra iteración del <for> ahora con <j = 2>. Entonces vamos a comparar cada posición de <numeros> con <valores[1]>. Nunca va a ser cierto ya que <numeros> sigue creciendo y <valores[1]> es menor que todos. Llegamos al final del <for> con <j = 100> ahora ya no se va a repetir, entonces salimos del <for> y miramos el <if> de fuera: ¿i <= 100? Sí, entonces <i = 2> y <goto iterar>. Volvemos ANTES del <for> entonces se ejecuta la inicialización otra vez, <i = 1> y se repite el proceso comparamos cada valor de <numeros> con <valores[2]> lo que nunca va a ser cierto.

Creo que ahora ya vas viendo lo que va a hacer: ¿Cuándo va a entrar al <if> que hay dentro del <for>? Cuando un valor esté en <valores> y en <numeros>. Y como en <valores> tenemos los múltiplos de 2 y en <numeros> tenemos los múltiplos de 3... Que va a haber en <soluciones>? :silbar: Exacto, los múltiplos de 2 y 3 al mismo tiempo, es decir, los múltiplos de 6.

Ahora ya podemos responder a la pregunta, te la dejo a ti que seguro que te hace más ilusión dar con la respuesta correcta en vez de decírtelo yo. ;-) ;-)
970  Programación / Programación C/C++ / Re: Ayuda!! en: 21 Noviembre 2018, 12:00 pm
Está muy bien que te importe aprobar la asignatura de programación y está mejor todavía aprobar una asignatura sólo con hacer esos 4 programas  :xD :xD
Pero nosotros no estamos aquí para hacerte la tarea, que el que necesita aprobar eres tú, no los demás. Esto es un foro y ni a mí ni a ningún otro usuario de este foro creo que nos importe ayudarte a resolverte una duda.
Así que si tan importante es para ti aprobar ponte a hacer los programas y cuando te surja una duda puntual, te metes en el foro y te ayudamos a resolver esa duda. Si no te convence tanto esta idea es que no es tan importante para ti aprobar esta asignatura. :silbar:

PD: Si sigues queriendo ayuda (pero ayuda de verdad) te recomiendo que adjuntes el código que estés haciendo (entre etiquetas GeSHi) para que podamos ver cómo lo llevas.
Páginas: 1 ... 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 [97] 98 99 100 101 102
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines