Cool C/C++

Programacion en C/C++

Home FAQ Mostrar texto centrado o alineado a la derecha
Mostrar texto centrado o alineado a la derecha PDF Imprimir E-mail
Escrito por adrianvaca   
Martes, 22 de Marzo de 2011 23:51

El siguiente programa tiene la solución:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

#define MAX 1000

void substring(char *cadena, char *subcadena, int inicio, int longitud)
{
    int i;
   
    for(i=0; i < longitud && inicio+i < strlen(cadena); i++)
       subcadena[ i ] = cadena[ inicio+i ];

    subcadena[ i ] = '\0';
}

void centrar_linea(char *linea, int ancho)
{
    int i, espacios;
    espacios = (ancho - strlen(linea)) / 2;
   
    for(i=0; i < espacios; i++)
       printf(" ");

    printf("%s", linea);
}

void derecha_linea(char *linea, int ancho)
{
    int i, espacios;
    espacios = ancho - strlen(linea);
   
    for(i=0; i < espacios; i++)
       printf(" ");

    printf("%s", linea);
}

void centrar_cadena(char *cadena, int ancho)
{
    char subcadena[MAX];
    int i, total;

    total = (int)ceil((float)strlen(cadena) / ancho);
   
    for(i=0; i < total; i++)
    {
       substring(cadena, subcadena, i*ancho, ancho);
       centrar_linea(subcadena, ancho);
    }
}

void derecha_cadena(char *cadena, int ancho)
{
    char subcadena[MAX];
    int i, total;

    total = (int)ceil((float)strlen(cadena) / ancho);
   
    for(i=0; i < total; i++)
    {
       substring(cadena, subcadena, i*ancho, ancho);
       derecha_linea(subcadena, ancho);
    }
}


int main()
{
    char cadena[MAX];
   
    printf("Ingrese cadena: ");
    gets(cadena);

    printf("\n\nCadena centrada:\n");
    centrar_cadena(cadena, 80);

    printf("\n\nCadena alineada a la derecha:\n");
    derecha_cadena(cadena, 80);   
    printf("\n");
       
    system("PAUSE");
    return 0;
}



Las funciones centrar_cadena y derecha_cadena permite mostrar texto centrado y alineado a la derecha respectivamente.

Ejemplo:




Ahora si tenemos algo como:

int edad = 20;
printf("La edad es %d", edad);



Aparecerá alineado a la izquierda, si queremos alinerlo a la derecha, lo cambiaremos por:


int edad = 20;
char cadena[MAX];
srintf(cadena, "La edad es %d", edad);
derecha_cadena(cadena, 80);
 
Otros artículos

Escribir un comentario


Código de seguridad
Refescar