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.

El programa imprime una nueva línea antes de ingresar al bucle \n es.

He hecho este código para imprimir un triángulo después de que se escanee un lado. Muestra el triángulo, pero me imprime una nueva línea justo después de agregar un lado, lo cual no debería estar ahí. Aquí está mi código y también agregaré mi resultado, he marcado la nueva línea en blanco. Por favor ayuda, gracias.

#include <stdio.h>

void printTriangle (int n)
{
    for (int i = 0; i <= n; i++)
    {
        for (int j = 0; j < i; j++)
        {
            if (j > 0 && j < (i-1) && i > 0 && i < n)
            {
                printf("-");
            }
            else
            {
                printf("*");
            }
        }
        printf ("\n");
    }
}

int main ()
{
    int n;
    scanf ("%d", &n);
    printTriangle (n);

    return 0;
}

Imagen del resultado: aquí</stdio.h>

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está con la función scanf que estás usando para leer el número de líneas del triángulo. Cuando ingresas un número y presionas enter, se envía un carácter de nueva línea que se interpreta como parte de la entrada.

    Para solucionar esto, puedes agregar un getchar() después del scanf() para consumir el carácter de nueva línea. Aquí está la función main() actualizada:

    int main()
    {
        int n;
        scanf("%d", &n);
        getchar(); // consume el carácter de nueva línea
    
        printTriangle(n);
    
        return 0;
    }
    

    Con este cambio, el carácter de nueva línea debería ser consumido y no debería causar que se imprima una línea adicional después del triángulo.

Comments are closed.