•
Manipulando Dados
Parte 1
C++ é uma linguagem
muito rica em manipulação de dados. Iremos ver agora apenas alguns
comandos para manipulação seguindo uma didática linear de
estudos.
A biblioteca de
manipulação de entrada e saida é a <iomanip>.
#include
<iomanip>
Um comando desta
biblioteca é o setw que aplica o valor da função
em espaços antes ou depois de inserir um número na tela.
Exemplo com setw:
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
using std::ios;
// função de iostream para controle junto
com funções de iomanip
#include
<iomanip>
using std::setw;
int main()
{
int numero = 2000;
cout
<< " Imprime a variavel numero com um espaco de 20 casas: "
<< setw(20)
// especifica que proxima variavel esteje escrita em 20
casas
<< numero
<< endl;
cin;
return
0;
}
Observe que ele
joga o número sempre no final das 20 casas, para jogar para a esquerda,
o C++ oferece o comando left.
Esse comando é muito importante quando se usa \t e, para
tabulações.
Exemplo com left:
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
using std::ios;
#include
<iomanip>
using std::setw;
using std::left;
int main()
{
int numero = 2000;
cout
<< " Imprime a variavel numero com um espaco de 20 casas: "
<< setw(20)
// especifica que proxima variavel esteje escrita em 20 casas
<< left
<< numero
<< "OBSERVE
O ESPACO"
<< endl;
cin;
return
0;
}
Ainda em iomanip
temos alguns manipuladores de casa decimal para variáveis do tipo double
e float.
Um deles é o setprecision, que seta com quantas casas
serão imprimidas um ponto flutuante.
Exemplo
com setprecision:
Observe a identação do cout
Observe que ele arredonda a ultima casa
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
using std::ios;
#include
<iomanip>
using std::setprecision;
int main()
{
double numero = 55.689;
cout
<< " Imprime com 2 casas decimais "
<< setprecision(2)
<< numero
<< endl;
cout
<< " Imprime com 4 casas decimais "
<< setprecision(4)
<< numero
<< endl;
cin;
return
0;
}
De acordo com livro, em C++ quando usamos ponto flutuante, para calcular cientificamente
ou até monetários, o compilador não apresenta um número
precisamente correto, ou cientificamente correto.. C++ tem mais duas funções
para cuidar disso, mas mesmo assim, o livro aconselha o uso de bibliotecas de
terceiros cientificas e ou para matemática monetária.
Nunca reenvente a roda.
Alguns comandos cientificos
para ponto flutuante veremos agora.
setiosflags
- função que especifica uma forma de saida de dados ( como o comando
left por exemplo, poderia vir dentro de setiosflags )
ios::fixed
- função que fixa o ponto flutuante.
ios::showpoint
- função que mostra o ponto flutuante.
Confira
o exemplo
#include <iostream>
using std::cout;
using std::endl;
using std::ios;
#include <iomanip>
using std::setiosflags;
int main()
{
double numero1 = 50.533,
numero2 = 43.98;
cout << "Divisao com total de casas: "
<< setiosflags(
ios::fixed | ios::showpoint
)
<< numero1 / numero2
<< endl;
//
observe que a configuração de setprecision é alterada com
os iosflags
cout << "Divisao com 3 casas: "
<< std::setprecision(3)
// obseve que o iosflags usa as duas opções
( fixed e showpoint ) separado por um | que
veremos mais tarde
<< setiosflags(
ios::fixed | ios::showpoint
)
<< numero1 / numero2
<< endl;
std::cin;
return 0;
}
Teste estes programas para
conferir os resultados
Caso o programa não apresente os resultados ( fechando no final ) utilize
antes do return std::cin.get().
Perguntas???
Email
|