(*) Los contenidos desarrollados en este artículo no son fundamentales para comprender el contenido posterior del curso, y pueden saltearse o leerse más adelante. Algunas de las instrucciones aquí explicadas pueden variar mucho o no existir en diferentes versiones de C++.
Supongamos un programa sencillo, que imprima las los cuadrados de los números de 1 a 20:
// ejemplo.cpp: muestra los cuadrados
de los números 1 a 20
//
#include
"stdafx.h"
#include
"iostream"
using
namespace std;
void
main()
{
int
i,r;
cout<<"-----------"<<endl;
for
(i=1;i<=20;i++)
{
r = i*i;
cout<<"| "<<i<<" | "<<r<<" |"<<endl;
}
cout<<"-----------";
cin>>i;
}
La instrucción for se ve en el apartado 1.11. lo que hace el programa es generar sucesivamente los números de 1 a 20 y, para cada uno de ellos calcular su cuadrado.
El programa los debería mostrar ordenados en una tabla, pero el poco satisfactorio resultado es:
Como cada número tiene diferente cantidad de cifras, ocupan una cantidad diferente de espacios en pantalla y se hace imposible encolumnarlos.
Para resolver este problema, se utiliza el comando setw, que está incluido en el archivo iomanip. setw le indica a la instrucción cout cuantos espacios debe ocupar como mínimo el próximo elemento que se envíe a la pantalla. Así, setw(3) indica que el siguiente elemento debe ocupar por lo menos tres caracteres. Si es más corto, lo rellena con espacios en blanco. Si es más largo, lo imprime completo, ocupando más de los tres caracteres previstos. Así bastará indicar en cada setw un valor mayor a la longitud del elemento más largo de la lista, y así se podrá imprimir la misma encolumnada.
Se debe incluir un setw antes de cada elemento que se desea formatear, y la línea #include <iomanip> al principio.
// ejemplo.cpp: muestra los cuadrados
de los números 1 a 20
//
#include
"stdafx.h"
#include
"iostream"
using
namespace std;
#include <iomanip>
void
main()
{
int
i,r;
cout<<"------------"<<endl;
for
(i=1;i<=20;i++)
{
r = i*i;
cout<<"| "<<setw(2)<<i<<" | "<<setw(3)<<r<<" |"<<endl;
}
cout<<"------------";
cin>>i;
}
Con estos dos simples cambios, el resultado del programa es mucho más prolijo:
Otro problema que suele ocurrir es al querer escribir textos con acentos o caracteres especiales, aparece en lugar de ellos algún símbolo extraño:
Para solucionar esto, sólo hay que intercalar una línea en el programa:
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "spanish");
cout <<endl<< " ¡Próspero año nuevo!!" << endl;
return 0;
}
La instrucción setlocale indica el juego de caracteres que se utilizará para interpretar los char y los strings del programa.
Los acentos, eñes y signos de puntuación aparecen correctamente.
No hay comentarios:
Publicar un comentario