• Domingo 22 de Diciembre de 2024, 13:06

Autor Tema:  triangulo divisiorio usando continue  (Leído 4017 veces)

cazagavilan

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
triangulo divisiorio usando continue
« en: Viernes 22 de Julio de 2011, 06:39 »
0
3
33
66
696
690096
90390
90366309

Código: C++
  1. #include "stdafx.h"
  2. #include <iostream>
  3. using namespace std;
  4.      
  5. int main()
  6. {
  7.         const int filas = 9;
  8.         int i;
  9.         int n;
  10.         cout <<"Introduzca el numero deseado: \n";
  11.     cin >> n;
  12.         for(i = 1; i <= filas; i++)
  13.         {
  14.                 for( n=n; n<=0; n++)
  15.                 {
  16.                         if ( n % n != 0) continue;
  17.                     cout << n;
  18.                 }
  19.         }
  20. }
Hola, esto es lo que me ha salido, un desastre, a ver si alguien me puede dar una pista, por favor ser un poco comprensivos.

Gracias.

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re:triangulo divisiorio usando continue
« Respuesta #1 en: Viernes 22 de Julio de 2011, 15:34 »
0
No se a que te refieres con un "triangulo divisorio".

Si fueras un poco mas especifico respecto a cual deberia ser el resultado del programa, te podriamos orientar mejor.

Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

cazagavilan

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re:triangulo divisiorio usando continue
« Respuesta #2 en: Viernes 22 de Julio de 2011, 15:46 »
0
Modifica el ejercicio numero 3( que es este):
Código: C++
  1. #include "stdafx.h"
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.         int filas = 9;
  8.         int i;
  9.         int j;
  10.  
  11.         for(i = 1; i <= filas; i++)
  12.         {
  13.                 cout<<i;
  14.                 for(j = i + 1; j <= (2 * i - 1); j++)
  15.                         cout << j%10;
  16.                 for(j=j-2; j >= i; j--)
  17.                         cout << j%10;
  18.                 cout << endl;
  19.         }
  20. }

Ahora el programa debe mostrar por pantalla solo los numeros que sean divisibles por el segundo numero. Utiliza la instruccion continue. Por ejemplo, si pido solo los numeros divisibles entre 3:

3
33
66
696
690096
90390
90366309.

Esto es lo que me dice el ejercicio.

Muchas gracias.

cazagavilan

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re:triangulo divisiorio usando continue
« Respuesta #3 en: Viernes 22 de Julio de 2011, 15:47 »
0
Me he equibocado con el titulo del tema xD.

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re:triangulo divisiorio usando continue
« Respuesta #4 en: Sábado 23 de Julio de 2011, 05:34 »
0
La verdad ese algoritmo esta muy enredado, casi no se entiende el objetivo del mismo, es todo un acertijo matematico :think:

Bueno, trate de seguir el enunciado del problema original, si lo entendi bien, es dividir el numero que obtenias en el algoritmo original (j%10), entre un numero n dado (o sea (j&10)%n).

Haciendo la modificacion, y siguiendo la premisa de usar continue, obtuve el siguiente codigo, que utilizando el valor de prueba 3, me da una secuencia muy parecida a la que deberias obtener, asi que por eso publico el codigo, sin embargo solo es parecida, ya que la secuencia que obtengo con el valor 3 es la siguiente:

3
33
66
696
690096
90309
903309
90366309

Si observas, la secuencia difiere en los ultimos 3 numeros.

Quizas copiaste mal la secuencia, y la secuencia correcta es la que estoy publicando  :yes:

En todo caso, si no es esa la respuesta, me rindo, porque como dije antes es todo un enigma :think:

Código: [Seleccionar]
#include <iostream>
using namespace std;

int main()
{
    int filas = 9;
    int i;
    int j;
    int n;
    cout <<"Introduzca el numero deseado: \n";
    cin >> n;
    for(i = 1; i <= filas; i++)
    {
        if (i % n == 0)
            cout<<i;
        for(j = i + 1; j <= (2 * i - 1); j++)
        {
            if ((j % 10) % n != 0)
                continue;
            cout << j%10;
        }
        for(j=j-2; j >= i; j--)
        {
            if ((j % 10) % n != 0)
                continue;
            cout << j%10;
        }
        cout << endl;
    }
}

Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

cazagavilan

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re:triangulo divisiorio usando continue
« Respuesta #5 en: Sábado 23 de Julio de 2011, 06:49 »
0
Supongo que el enunciado esta mal :/.

Me podrias explicar ( si no es mucha molestia) un poco por favor que es lo que va haciendo el codigo para que yo aparte de tener el ejercicio hecho pueda entenderlo.

Muchas gracias.

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re:triangulo divisiorio usando continue
« Respuesta #6 en: Sábado 23 de Julio de 2011, 07:46 »
0
Me podrias explicar ( si no es mucha molestia) un poco por favor que es lo que va haciendo el codigo

Eso ya lo hice arriba  :whistling:, solo tienes que revisar el programa...

Bueno, para que te quede mas claro, el algoritmo original imprime el valor de j % 10 (modulo de la division entre 10) y el problema pide que se imprima el valor de j % 10 en caso que sea divisible entre n. Un numero es divisible entre n, si su modulo (residuo) es cero por lo tanto para comprobar que j % 10 es divisible entre n, la condicion es (j % 10) % n == 0.

Pero como el ejercicio pide usar "continue"  y continue lo que hace es saltar al final del ciclo for, si pusieras la condicion de arriba, se saltaria el ciclo y no imprimiria cuando el valor sea divisibke entre n. Y nosotros queremos en realidad que imprima cuando sea divisble entre n y salte cuando NO sea divisible entre n (o sea, lo contrario) Por lo tanto, la condicion debe ser "lo contrario", es decir, negacion, por eso la condicion debe ser (j % 10) % n != 0.

Si aun tienes mas dudas, has una corrida de escritorio, o utiliza la ejecucion paso a paso (F10/F11) de Visual C++ o del entorno de programacion que utilices.

Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

cazagavilan

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re:triangulo divisiorio usando continue
« Respuesta #7 en: Sábado 23 de Julio de 2011, 08:02 »
0
Muchas gracias.