Make your own free website on Tripod.com

Alineación con el Output

 

A través del Output se pueden controlar los espacios horizontal y verticalmente.

 

Crear líneas en blanco

 

Instrucciones

Producto del  Output *

cout << “Hola,  “;

cout << “Paola Marie.  “ <<endl;

cout << “Has visto a Lismarie?” <<endl;

Hola, Paola Marie.

Has visto a Lismarie?

cout << “Hola,  <<endl “;

cout << “Paola Marie.  “ <<endl;

cout << “Has visto a “<<endl

cout  << Lismarie?” <<endl; <<endl

Hola,

Paola Marie.

Has visto a

Lismarie?

cout << “Hola,  <<endl “;

cout << “Paola Marie.  “;

cout << “Has visto a “<<endl

cout  << Lismarie?” <<endl; <<endl

Hola,

Paola Marie. Has visto a

Lismarie?

cout << “Hola,  “;

cout << “Paola Marie.  “ <<endl <<endl;

cout << “Has visto a Lismarie?” <<endl;

Hola, Paola Marie.

 

Has visto a Lismarie?

* Los espacios de línea o verticales se controlan con el manipulador endl añadiendo tantos endl cuantas líneas en blanco quiera uno incluir.

 

Insertar blancos en una línea

 

La forma de controlar los espacios horizontales del output, una técnica es enviando blancos extras al output de la pantalla. Otra técnica es incluir el espacio en blanco en el contenido de las variables como en el ejemplo del capítulo anterior.

 

Para imprimir un solo blanco en la pantalla, por tratarse de un char, se encierra dicho blanco entre las comillas simples.  Ejemplo:

 

cout << nombre ‘  ‘ <<apellido;

 

La instrucción:

 

cout << ‘*’  <<                                 ‘*’;

 

produce el output

 

**

 

Pues el compilador no considera los espacios dados con la barra espaciadora, a no ser que se encierren entre comillas (“  “) cuando son más de un espacio.

 

Formato del Output

 

El formato del output de un programa significa controlar la forma como uno quiere que aparezcan alineados el texto y los números en la pantalla o en la impresora. Vimos ya que las líneas en blanco se controlan con el manipulador endl. A continuación presentaremos la forma de poner blancos extras en números enteros, reales y stings literales.

 

Enteros y Strings

 

Los valores enteros y string, por defecto, aparecen en el output sin espacios entre ellos. Si las variables j, k, y l contienen los valores 10, 5, y 86, la instrucción

 

cout << “El resultado es:  “ << j  << k << l;

 

imprime los siguiente, sin separar el contenido de las tres variables:

 

El resultado es: 10586

 

Para separar los valores en el output, hay que incluir un blanco (como un char constante) entre los valores:

 

cout << “El resultado es:  “ << j  << ‘   ‘ << k j  << ‘   ‘ << l;

 

Esta instrucción produce:

 

El resultado es: 10  58  6

 

Si quisieras más espacios entre los números, hay que usar los strings literales que contienen blancos colocándolos entre comillas dobles:

 

cout << “El resultado es:   “ << j  << “             “ << k j  << “            “ << l;

 

Esta instrucción produce el siguiente output:

 

El resultado es:  10              58               6

 

Además, C++ tiene un manipulador para controlar los espacios horizontales, de la misma forma que controla espacios verticales con el manipulador endl. Este manipuador se llama setw (significa “set width”), el cual controla la posición de varios caracteres (no la de un solo carácter o char). Para que trabaje este manipulador hay que incluir en la cabecera el archivo <iomanip>.

 

La sintaxis del manipulador setw es la siguiente:

 

setw(n)

 

La letra n representa el número de espacios que corre el valor alineado hacia la derecha. La posición del grupo de caracteres se llama field (campo).

 

Asumiendo que las variables int tienen asignado el siguiente valor:

 

a = 33;

b = 7132

 

se producen los distintos output:

 

Instrucción

Output ([] significa blanco)

cout    << setw(4) << a

          << setw(5) << b

          << setw(6) << “Hola”;

 

 

[][]33[]7132[][]Hola

cout    << setw(2) << a

          << setw(4) << b

          << setw(4) << “Hola”;

 

 

337132Hola

cout    << setw(6) << a

          << setw(5) << “Hola”

          << setw(5) << b;

 

 

[][][][]33[]Hola[]7132

cout    << setw(6) << “Hola”;

          << setw(7) << b;

 

[][]Hola[][][]7132

cout    << setw(1) << a

            << setw(5) << b

 

33[]7132

 

Aunque se dio el valor de 1 al contenido de la variable a, el campo se expande automáticamente hasta fijar el valor de dos-dígitos que consta 33.

 

Números reales (Floating)

 

También se puede especificar el ancho para los valores reales. En este caso, hay que alinear el valor teniendo en cuenta la posición que ocupa el punto decimal. El valor 8.54 requiere cuatro posiciones.  Si num contiene el valor 8.54. la instrucción

 

cout    << setw(4) << num <<endl

          << setw(6) << num <<endl

          << setw(3) << num <<endl;

 

produce el siguiente output:

 

8.54

   8.54

8.54

 

Existen otros manipuladores relacionados con los números decimales: el fixed, showpoint y el setprecision.

 

El primero se utiliza para forzar al programa a escribir el resultado en forma decimal y no científica. Suponiendo que el resultado de una ecuación fuera 123456789.5, podría aparecer en la pantalla de esta forma:

 

1.234567E+08

 

Con el manipulador fixed se evita semejante anotación científica.

 

cout  << fixed << 3.8 * x;

 

C++ no coloca punto decimal a los números enteros. El valor 55.0 lo imprime así:

 

55

 

Para forzar a escribir el punto decimal en los números enteros se utiliza manipulador showpoint:

 

cout  << showpoint << floatVar;   //En caso de que la variable floatVar contenga un entero, éste aparece como decimal

 

El manipulador setprecision(n) controla la cantidad de números que uno quiere que aparezcan después del punto. También requiere el archivo <iomanip>.

 

cout  << fixed << setprecision(2) << “El Income Tax es $” <<precio * 0.05;

 

La cifra aparecerá únicamente con dos (2) decimales:

 

543.78

 

Header File

Manipulador

Tipo argumento

Efecto

<iostream>

endl

No

Crea una nueva línea

<iostream>

showpoint

No

Fuerza a un punto decimal.

<iostream>

fixed

No

Suprime la anotación científica

<iomanip>

Setw(n)

Int

Calibra el ancho del campo a n

<iomanip>

Setprecision(n)

Int

Calibra el número de decimales después del punto a n dígitos

 

 

//********************************************************************************************

// Programa sobre el costo de una casa

//Este programa computa el costo por pies cuadrados de una vivienda

//dadas las dimensiones, el número de dependencias, el tamaño de

//espacios no habitables, y el costo total, menos el terreno

//********************************************************************************************

#include <iostream>

#include <iomanip>                              //Para los manipuladores setw( ) y setprecision( )

 

using namespace std;

 

const float ANCHO = 30.0;                                      // Ancho de la casa                                 

const float LARGO = 40.0;                                       // Largo de la casa

const float STORIES = 2.5;                                       // Número de dependencias

const float ESPACIO_NO_HABIT = 825.0;            // Garage, closts, etc.

const float PRECIO = 150000.0;                              // Precio de venta menos el patio

 

int main ( )

{

            float piesCuadrados;                             // Total pies cuadrados

            float piesHabitables;                              //Área habitable

            float costoPorPie;                                 //Costo / pie del area habitable

 

            cout <<fixed << showpoint;                  // Calibra el formato del punto decimal de aquí en adelante

           

            piesCuadrados = LARGO * ANCHO * STORIES;

            piesHabitables = piesCuadrados - ESPACIO_NO_HABIT;

            costoPorPie = PRECIO / piesHabitables;

 

cout << “El costo por pie cuadrado es de “

         << setw(6) << setprecision (2) << costoPorPie << endl;

return 0;

}

 

 

 

Ejercicios

 

  1. Incluye en el programa anterior la impresión:

a)                                               del total de cuadrados habitables (con solo dos números decimales) que tiene la casa y

b)                                               el costo total de la casa.

 

Alinea los tres valores numéricos de tal forma que quede uno debajo del otro centralizados por el punto decimal, tal como aparecen a continuación:

 

                 250.00  Pies cuadrados

                    57.60  El pie cuadrado

              ------------

             14400.00  Costo de la casa

 

  1. Asume que la variable pago tipo float contiene el valor 678.55301.¿Qué instrucción de output se debe usar para imprimer pago en dólares y centavos con tres blancos iniciales y dos números decimals? Utiliza los manipuladores fixed, setw y setprecision.
  2. ¿Cuál es el propósito de <iomanip> y de <iostream?