Dev - C++ - Construir un cuadrado con n asteriscos (*) por cada lado

 
Vista:
sin imagen de perfil
Val: 20
Ha disminuido su posición en 2 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Construir un cuadrado con n asteriscos (*) por cada lado

Publicado por Jairo (3 intervenciones) el 17/11/2020 13:19:24
Hola, lo que sucede, es que tengo dificultades en este ejercisio, alguien me puede ayudar? (el ejercisio se puede hacer tanto en pseint, como en C++)

ENUNCIADO DEL EJERCICIO:
Un programa de computador recibe como entrada un número entero n comprendido entre 2 y 99 únicamente (en caso de estar fuera de este rango, el programa indica un error en el dato de entrada y lo solicita nuevamente).

El programa pregunta enseguida la posición en la cual se mostrará la figura la cual puede ser: izquierda, centro o derecha. En caso de ingresar un dato errado, el programa deberá preguntar nuevamente la posición hasta que esta sea ingresada correctamente.

Si el número n ingresado es un número PAR el programa mostrará en la posición ingresada un cuadrado construido con n asteriscos (*) por cada lado.

Si el número n ingresado es un número IMPAR el programa mostrará en la posición ingresada un rombo construido con n asteriscos (•) en el eje central.

Adjunto envio fotos de como se deberia ver, para dos casos
Ejemplo con n par: (el usuario escogió n=6 y posición al centro)

Captura

Ejemplo con n inpar: (el usuario escogió n=7 y posición a la derecha)

Captura2
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alfil
Val: 4.313
Oro
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Construir un cuadrado con n asteriscos (*) por cada lado

Publicado por Alfil (1165 intervenciones) el 17/11/2020 19:59:10
Falta ajustar un poco el margen, según sea izquierda, centro o derecha.

1
2
3
4
5
6
7
8
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include <iostream>
 
using namespace std;
 
void leerDatos(int& lado, int& pos);
void cuadrado(int lado, int pos);
void rombo(int lado, int pos);
 
int main()
{
    int lado, posicion;
 
    leerDatos(lado, posicion);
 
    if (lado % 2 == 0) cuadrado(lado, posicion);
    else rombo(lado, posicion);
 
    return 0;
}
 
void leerDatos(int& lado, int& pos)
{
    do {
        cout << "\nIngrese un numero entre 2 y 99: ";
        cin >> lado;
 
        if (lado < 2 || lado > 99)
            cout << "\n\nDEBE ESTAR EN EL RANGO 2 - 99" << endl;
 
    } while (lado < 2 || lado > 99);
 
    do {
        cout << "\nIngrese la posicion (1: Derecha, 2: Centro, 3: Izquierda): ";
        cin >> pos;
 
        if (pos < 1 || pos > 3)
            cout << "\n\nDEBE ESTAR EN EL RANGO 1 - 3" << endl;
 
    } while (pos < 1 || pos > 3);
}
 
void cuadrado(int lado, int pos)
{
    int margen = lado * (pos - 1) * 2;
 
    cout << endl;
 
    for (int i = 1; i <= lado; i++)
    {
        for (int j = 0; j < margen; j++)
            cout << "  ";
 
        for (int k = 0; k < lado; k++)
            cout << "* ";
 
        cout << endl;
    }
}
 
void rombo(int lado, int pos)
{
    int margen = lado * (pos - 1) * 2;
 
    cout << endl;
 
    for ( int k = 1; k <= lado; k++)
    {
        for (int m = 0; m < margen; m++)
            cout << "  ";
 
        for (int j = 1; j <= lado-k; j++)
            cout << " ";
 
        for (int j = 2; j <= k; j++)
            cout << " *";
 
        cout << endl;
    }
 
    for ( int k = 1; k <= lado-1; k++ )
    {
        for (int m = 0; m < margen; m++)
            cout << "  ";
 
        for (int j = 1; j <= k; j++)
            cout << " ";
 
        cout << "*";
 
        for (int j = 1; j <= (lado-1)-k; j++)
            cout << " *";;
 
        cout << endl;
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar