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.

Quiero imprimir un “recibo” en C pero no puedo descifrar cómo hacerlo.

He estado tratando de descubrir cómo imprimir este “recibo”, pero no sé si es posible sin imprimir todo por separado.
Esto es lo que quiero imprimir: https://pastebin.com/qxk18ARh (mira los datos sin formato de la copia):

“`none

<hr>

<ul>
<li>DETALLES PERSONALES *</li>
<li>*</li>
<li>Nombre: Tesla *</li>
<li>Apellido: Nikola *</li>
<li>Dirección: Androutsou 150, Piraeus, 15232 *</li>
<li>Total días de consumo: 179 *</li>
<li>Metros cuadrados: 110 *</li>
<li>*
<strong><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em></strong> * PRECIOS *</li>
<li>*</li>
<li>Costo inicial: EUR 19.32 * </li>
<li>Detalles: * </li>
<li>Impuestos Municipales: EUR 7.05 * </li>
<li>Cargos Totales: EUR 12.27 * </li>
<li>Costo final (después de deducción del pago con tarjeta de crédito): EUR 17.39 * </li>
<li>*
<strong><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em><em>*</em></strong> * DETALLES DEL PAGO * </li>
<li>*</li>
<li>Número de tarjeta de crédito: 1234 5678 9012 3456 * </li>
<li><ul>
<li><hr></li>
</ul></li>
</ul>

“`
Desglos de línea extraños, espacios en blanco al final y líneas demasiado largas como se encuentra en el enlace de pastebin, pero probablemente no es lo que realmente se desea. Los datos sin procesar también contienen muchas tabulaciones.

Busqué y encontré cómo imprimir un cuadrado hueco con estos bucles for:

for (int i = 1; i <= 23; i++) {
    for (int j = 1; j <= 23; j++) {
        if (i == 1 || i == 23 || j == 1 || j == 23){
            printf("* ");
        }else{
            printf("  ");
        }
    }

    printf("\n");

Pero estoy buscando un rectángulo en primer lugar y no sé cómo poner las 2 líneas en su interior de esta manera. Así que principalmente pregunto si es posible de una manera más compacta, como con bucles, y si es así, cómo debo hacerlo.
Cualquier tipo de ayuda será bienvenida. Gracias de antemano.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Es posible imprimir el recibo de una manera más compacta utilizando bucles. Puedes usar un bucle anidado para imprimir todo el bloque de texto línea por línea, y dentro de él utilizar declaraciones condicionales para imprimir las estrellas y el texto en los lugares correctos. Aquí tienes un ejemplo de cómo se podría hacer esto:

    void imprimir_recibo() {
        int i, j;
        printf("****************************************************************************************************\n");
        printf("*\t\t\t\t\t\t\t DETALLES PERSONALES \t\t\t\t\t\t\t*\n");
        printf("*\t\t\t\t\t\t\t\t\t\t\t\t\t\t*\n");
        printf("*\tNombre:\t\t\t\t\t\t\t\t\t\t\t%s\t\t\t\t*\n", "Tesla");
        printf("*\tApellido:\t\t\t\t\t\t\t\t\t\t%s\t\t\t\t*\n", "Nikola");
        printf("*\tDirección:\t\t\t\t\t\t\t\t\t%s\t*\n", "Androutsou 150, Piraeus, 15232");
        printf("*\tTotal días de consumo:\t\t\t\t\t\t\t\t\t\t\t%d\t\t\t\t\t\t\t\t*\n", 179);
        printf("*\tMetros cuadrados:\t\t\t\t\t\t\t\t\t\t%d\t\t\t\t\t\t\t\t*\n", 110);
        printf("*\t\t\t\t\t\t\t\t\t\t\t\t\t\t*\n");
        printf("****************************************************************************************************\n");
        printf("*\t\t\t\t\t\t\t\t    PRECIOS  \t\t\t\t\t\t\t*\n");
        printf("*\t\t\t\t\t\t\t\t\t\t\t\t\t\t*\n");
        printf("*\tCosto inicial:\t\t\t\t\t\t\t\t\t\tEUR %.2f\t\t\t\t\t*\n", 19.32);
        printf("*\tDetalles:\t\t\t\t\t\t\t\t\t\t\t\t\t*\n");
        printf("*\t\tImpuestos municipales:\t\t\t\t\t\t\t\t\tEUR %.2f\t\t\t\t\t*\n", 7.05);
        printf("*\t\tCargos totales:\t\t\t\t\t\t\t\t\tEUR %.2f\t\t\t\t\t*\n", 12.27);
        printf("*\tCosto final (después de deducción del pago con tarjeta de crédito):\tEUR %.2f\t\t\t\t\t*\n", 17.39);
        printf("*\t\t\t\t\t\t\t\t\t\t\t\t\t\t*\n");
        printf("****************************************************************************************************\n");
        printf("*\t\t\t\t\t\t\t   DETALLES DE PAGO  \t\t\t\t\t\t\t*\n");
        printf("*\t\t\t\t\t\t\t\t\t\t\t\t\t\t*\n");
        printf("*\tNúmero de tarjeta de crédito:\t\t\t\t\t\t\t\t\t%s\t*\n", "1234 5678 9012 3456");
        printf("*\t\t\t\t\t\t\t\t\t\t\t\t\t\t*\n");
        printf("****************************************************************************************************\n");
    }
    

    This function utiliza declaraciones printf para imprimir cada línea del recibo, incluyendo el texto y las estrellas. También incluye marcadores de posición para los valores dinámicos como el nombre, apellido y costo. Puedes llamar a esta función en tu código para imprimir todo el recibo.

Comments are closed.