// setf2.cpp -- řízení formátování pomocí funkce setf() se dvěma parametry
#include <iostream>
#include <cmath>

int main()
{
	using namespace std;
	// zarovnání vlevo, zobrazení znaménka plus, zobrazení koncových
	// nul, přesnost na 3 místa
	cout.setf(ios_base::left, ios_base::adjustfield);
	cout.setf(ios_base::showpos);
	cout.setf(ios_base::showpoint);
	cout.precision(3);
	// e-notace a uložení původního nastavení formátování
	ios_base::fmtflags old = cout.setf(ios_base::scientific,
		ios_base::floatfield);
	cout << "Zarovnani vlevo:\n";
	long n;
	for (n = 1; n <= 41; n+= 10)
	{
		cout.width(4);
		cout << n << "|";
		cout.width(12);
		cout << sqrt(double(n)) << "|\n";
}

	// změna na vnitřní zarovnání
	cout.setf(ios_base::internal, ios_base::adjustfield);
	// obnovení implicitního stylu zobrazení typu float
	cout.setf(old, ios_base::floatfield);

	cout << "Vnitrni zarovnani:\n";
	for (n = 1; n <= 41; n+= 10)
	{
		cout.width(4);
		cout << n << "|";
		cout.width(12);
		cout << sqrt(double(n)) << "|\n";
	}

	// zarovnání vpravo, zápis s pevným oddělovačem
	cout.setf(ios_base::right, ios_base::adjustfield);
	cout.setf(ios_base::fixed, ios_base::floatfield);
	cout << "Zarovnani vpravo:\n";
	for (n = 1; n <= 41; n+= 10)
	{
		cout.width(4);
		cout << n << "|";
		cout.width(12);
		cout << sqrt(double(n)) << "|\n";
	}

	return 0;
}
