es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Necesito ayuda para escribir un programa que imprime una forma y que toma el número de filas del usuario.

La forma debería lucir así: shape.

Por ejemplo, esta figura tiene 10 líneas. Y la forma debe continuar con este patrón.

Aquí está mi código hasta ahora:

#include <iostream>

using namespace std;
int main()
{
    int rows, a, b, c, d;
    cout << "Ingrese el número de filas: ";
    cin >> rows;
    for (a = 1; a <= rows; a++) {
        for (b = 1; b <= a; b = a + 4) {
            cout << "   *"<< endl;
        }
        for (c = 2; c <= rows; c += 2) {
            cout << " * *"<< endl;
        }
        for (d = 3; d <= rows; d += 4) {
            cout << "  ***"<< endl;
        }
    }
    return 0;
}

Estoy teniendo problemas para ordenarlo. Por ejemplo, cuando ingreso el valor 5, cada fila se repite 5 veces, pero quiero que el número de filas sea 5.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para lograr la forma deseada, puedes usar bucles for anidados para imprimir los asteriscos y espacios en el patrón correcto. Aquí hay un ejemplo de código para generar la forma:

    “`c++
    #include
    using namespace std;

    int main()
    {
    int rows;
    cout << “Ingrese el número de filas: “;
    cin >> rows;

    // Bucle externo para el número de filas
    for (int i = 1; i <= rows; i++)
    {
        // Bucle interno para los espacios iniciales
        for (int j = i; j < rows; j++)
            cout << " ";
    
        // Bucle interno para el primer conjunto de asteriscos
        for (int j = 1; j <= i*2-1; j++)
            cout << "*";
    
        // Bucle interno para los espacios entre conjuntos de asteriscos
        for (int j = 1; j <= (rows-i)*2; j++)
            cout << " ";
    
        // Bucle interno para el segundo conjunto de asteriscos
        for (int j = 1; j <= i*2-1; j++)
            cout << "*";
    
        // Imprimir nueva línea
        cout << endl;
    }
    
    return 0;
    

    }
    “`

    En este código, el bucle externo recorre cada fila, y los primeros conjuntos de bucles internos se encargan de imprimir los espacios iniciales y el primer conjunto de asteriscos. El tercer bucle interno imprime los espacios entre el primer y segundo conjunto de asteriscos, y el cuarto bucle interno imprime el segundo conjunto de asteriscos.

    Ten en cuenta que el número de espacios entre conjuntos de asteriscos se determina por la diferencia entre el número total de filas y el número de la fila actual, multiplicado por dos. Además, ten en cuenta que el número de asteriscos en cada fila se determina por el número de la fila, multiplicado por dos menos uno.

    Con este código, deberías poder generar la forma a partir de cualquier número de filas.

Comments are closed.