C++
Home

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