Dibujar un triángulo rectángulo con asteriscos

Glithnar

Newbie Lvl 1
Buenas gente, les cuento rápido. Estoy cursando programación en la facultad y me enviaron un trabajo con varios ejercicios. Recién arrancamos, vimos lo básico de C declarar variables, operadores aritméticos, lógicos, etc. La onda es que en uno de los puntos pide dibujar un triángulo y que la medida de los catetos sea enviada por teclado por usuario (obvio solo 1 porque los 2 catetos son iguales). La onda es que tengo una idea básica de programación y no podemos usar bucles para hacer el ejercicio porque se supone que no lo vimos aún. La verdad que no encuentro una manera de hacerlo sin un for, si alguno me tira una idea se lo agradecería.
 

Dr. Lord Fers

Legendario Inmortal Lvl 5
Miembro del equipo
Moderador
Moderador de Tecnología
¿Y qué viste hasta ahora? Así podemos indicarte cómo resolverlo de una manera alternativa con lo que supuestamente ya te enseñaron.

Saludos.
 

Glithnar

Newbie Lvl 1
¿Y qué viste hasta ahora? Así podemos indicarte cómo resolverlo de una manera alternativa con lo que supuestamente ya te enseñaron.

Saludos.
Tipos de datos y declaración de variables.
Operadores (operaciones aritméticas, operador de asignación, operadores relacionales, operadores lógicos).
Función scanf, macros y método burbuja.
 

Bramhh

Fundador EvolutionAo
Buenas gente, les cuento rápido. Estoy cursando programación en la facultad y me enviaron un trabajo con varios ejercicios. Recién arrancamos, vimos lo básico de C declarar variables, operadores aritméticos, lógicos, etc. La onda es que en uno de los puntos pide dibujar un triángulo y que la medida de los catetos sea enviada por teclado por usuario (obvio solo 1 porque los 2 catetos son iguales). La onda es que tengo una idea básica de programación y no podemos usar bucles para hacer el ejercicio porque se supone que no lo vimos aún. La verdad que no encuentro una manera de hacerlo sin un for, si alguno me tira una idea se lo agradecería.
Si hablamos de lógica Glithnar.

Te recomiendo lo siguiente..

Lo que te piden segun lo que me decis es usando espaciado y asteriscos.

Es decir, utilizar la función de imprimir en pantalla seguramente o en un frm(Formulario).

La lógica para que lo resuelvas es centrarlo en un bloque y que inicie en 1 asterisco y posterior sume 2 espacios y agrege asterisco asterisco y asi hasta que finalice, con eso deberias medir y sacar calculo de cuanto tiene cada lado para hacer los asteriscos necesarios.

Osea centras texto.
Agregar iniciamos en 1(*)
Posterior sumamos * + espacio + *
Posterior sumamos ++ al espacio "*" + "espacio" + "espacio" + "*"
Y así las veces que te pida, es decir con un for y con las medidas que les pases.

Creo que ta lindo el ejercicio para hacer, metele que es simple, a puro for lo sacas al toque perro ;) Y algunas variables sumadas y esas weas.

Acordate que con for no necesitas hacerlo, te tire el pique de la logica podes hacerlo con while, con if o hasta con if y llamando funcionesy asi creando un "FOR" rancio.
 

Glithnar

Newbie Lvl 1
Si hablamos de lógica Glithnar.

Te recomiendo lo siguiente..

Lo que te piden segun lo que me decis es usando espaciado y asteriscos.

Es decir, utilizar la función de imprimir en pantalla seguramente o en un frm(Formulario).

La lógica para que lo resuelvas es centrarlo en un bloque y que inicie en 1 asterisco y posterior sume 2 espacios y agrege asterisco asterisco y asi hasta que finalice, con eso deberias medir y sacar calculo de cuanto tiene cada lado para hacer los asteriscos necesarios.

Osea centras texto.
Agregar iniciamos en 1(*)
Posterior sumamos * + espacio + *
Posterior sumamos ++ al espacio "*" + "espacio" + "espacio" + "*"
Y así las veces que te pida, es decir con un for y con las medidas que les pases.

Creo que ta lindo el ejercicio para hacer, metele que es simple, a puro for lo sacas al toque perro ;) Y algunas variables sumadas y esas weas.

Acordate que con for no necesitas hacerlo, te tire el pique de la logica podes hacerlo con while, con if o hasta con if y llamando funcionesy asi creando un "FOR" rancio.
Es que ahí está el problema, no se pueden utilizar ningún bucle ni condicional porque no lo vimos aún. Lo hice al ejercicio con un for pero el profesor me lo rebotó porque no lo vimos aún.
 

Bramhh

Fundador EvolutionAo
Tampoco podes hacer un bucle con ifs?.

Por ejemplo....

Bienvenidos al constructor de triangulos mas rancio de mi universidad, que estan haciendo aplicativos y a nosotros nos enseñan hacer triangulos chotos.


if "¿desea armar un triángulo?"

Si

end if

If cuantos cmquieres de acostado

y de abajo?

Perfecto si le das 50 costado y 10 abajo le aplicas esto.


*
**
***
****
*****

Es decir,


*
**
***
****
*****
Centramos primero.
Segundo sumamos los lados, si son 50 * de costado, deberias calcular el area del triangulo.
Y dependiendo eso, rellenas en +1 +1 +1 y llamandose entre IFS.
No uses for ni while.
Yo te lo haria pero alta paja, solo te dejo lo que haria yo en logica para resolver, para mi q va por el "DESPEJAR AREA DEL TRIANGULO".
Asi sabes cuantos * tiene dentro del mismo.
Ademas, tenes un dato muy importante siempre que se agrega un * se suma uno más.​
 

Glithnar

Newbie Lvl 1
de usar goto ni hablamos?
Jajaja no. Imaginate que estás en la cuarta semana del primer cuatrimestre de la carrera de programación. Estamos hablando de que no conocés casi nada más que tomar datos por teclado y dibujarlos en consola, declarar variables y saber usar operadores.
Post automatically merged:

Tampoco podes hacer un bucle con ifs?.

Por ejemplo....

Bienvenidos al constructor de triangulos mas rancio de mi universidad, que estan haciendo aplicativos y a nosotros nos enseñan hacer triangulos chotos.


if "¿desea armar un triángulo?"

Si

end if

If cuantos cmquieres de acostado

y de abajo?

Perfecto si le das 50 costado y 10 abajo le aplicas esto.


*
**
***
****
*****

Es decir,


*
**
***
****
*****
Centramos primero.
Segundo sumamos los lados, si son 50 * de costado, deberias calcular el area del triangulo.
Y dependiendo eso, rellenas en +1 +1 +1 y llamandose entre IFS.
No uses for ni while.
Yo te lo haria pero alta paja, solo te dejo lo que haria yo en logica para resolver, para mi q va por el "DESPEJAR AREA DEL TRIANGULO".
Asi sabes cuantos * tiene dentro del mismo.
Ademas, tenes un dato muy importante siempre que se agrega un * se suma uno más.​
Tampoco. If ya lo estamos viendo, pero no está dentro de lo que se vió cuando esos ejercicios se subieron.
 
Última edición:

Dr. Lord Fers

Legendario Inmortal Lvl 5
Miembro del equipo
Moderador
Moderador de Tecnología
Es sencillo, tenés que resolverlo utilizando recursividad.

Saludos.
 

Bramhh

Fundador EvolutionAo
Como dice Fers.

function Y =pascal(m)
if m==1
Y=[1,1];
else
Y=pascal(m-1);
A=zeros(1,m-1);
for i=1:m-1
A(i)=Y(i)+Y(i+1);
end
Y=[1,A,1];
end
end

>> pascal(5)
ans = 1 5 10 10 5 1


 

Dr. Lord Fers

Legendario Inmortal Lvl 5
Miembro del equipo
Moderador
Moderador de Tecnología
Estoy sin el IDE a mano, lo acabo de probar desde el celular, te doy un ejemplo de cómo podés dibujar una línea horizontal en C++ (podés fácilmente llevarlo a C en el caso de que tu materia sea sólo C), lo testeé desde un compilador web, y funcionó: (https://www.onlinegdb.com/online_c_compiler)

C++:
#include <stdio.h>
#include <string>

std::string line(int size)
{
    if (size == 0)
        return "*\0";
    
    std::string temp = line(size - 1);
    temp += "*";
    return temp;
}

int main()
{
    //Dibuja una línea de 10 asteriscos:
    printf(line(10).c_str());
    return 0;
}
Espero que te sea de utilidad.
Saludos.
 

Dr. Lord Fers

Legendario Inmortal Lvl 5
Miembro del equipo
Moderador
Moderador de Tecnología
Fer!!! LPM jaja no a todos les es sencillo !!!!

jaja deja de tomarlo todo como facil, acordate que algunos no lo ven de primera.
Es que el método es fácil, lamentablemente el profesor no les tiró una pista de qué podían buscar, así que por acá le comento lo que podía hacer fácilmente, así no piensa que es una "magia oscura" lo que el profesor le iba a enseñar, jaja.

Saludos.

PD: Acá te dejo un triángulo de único lado, quedó horrible igualmente, pero vas a entender la funcionalidad al menos:
C++:
int lines = 0;
//Triángulo de único lado:
std::string triangle(int a)
{
    if (a == 0)
        return "";
    
    std::string temp = line(lines++);
    temp += "\n";
    temp += triangle(a - 1);
    
    return temp;
}
 

Bramhh

Fundador EvolutionAo
Buenas gente, les cuento rápido. Estoy cursando programación en la facultad y me enviaron un trabajo con varios ejercicios. Recién arrancamos, vimos lo básico de C declarar variables, operadores aritméticos, lógicos, etc. La onda es que en uno de los puntos pide dibujar un triángulo y que la medida de los catetos sea enviada por teclado por usuario (obvio solo 1 porque los 2 catetos son iguales). La onda es que tengo una idea básica de programación y no podemos usar bucles para hacer el ejercicio porque se supone que no lo vimos aún. La verdad que no encuentro una manera de hacerlo sin un for, si alguno me tira una idea se lo agradecería.
Aca te dejo lo basico de la recursividad, lo hice en javascript, recien con el sublimetext aja, ojala te sea de base.

No puedo hacerte el resultado, porq tenes q saber sacarlo por tu cuenta o tu profe se va dar cuenta jaja q has hecho copy and past.

Con esta forma deberias poder sacarlo.

Lo hice medio rancio pero bueno se entiende.... jaja

HTML:
<html>
    <head>
        <title>Triangulos</title>
        <meta charset="utf-8">
        
        <!--Cito las funciones de javascript-->
        <script language="JavaScript">
    
        function crearTriangulo(numA, numB){
            if (numA == null){
                var numeroContar = prompt("¿Hasta que numero te cuento?");
                var numeroInicial = "0";
                crearTriangulo(parseInt(numeroInicial) + 1, parseInt(numeroContar));
            }else{
                alert("Nos encontramos en el numero "+numA);

                if(numA == numB){
                    alert("LLgamos al numero indicado");
                }else{
                    crearTriangulo(numA+1,numB);
                }
            }
        }
        </script>
    </head>

    <body onload="crearTriangulo()">
    </body>
</html>
 
Arriba