#include <iostream>
#include <iomanip> // Pentru setw, setprecision...
#include <fstream> // Pentru fisiere
#include <sstream> // Pentru stringstream
#include <cstdlib> // Pentru srand
#include <ctime> // Pentru time
#include <cmath> // Pentru sqrt
#include <climits> // Pentru INT_MIN si LLONG_MAX
#include <windows.h> // Pentru tipul HANDLE
using namespace std;
int main()
{
// Stergerea ecranului folosinf comanda DOS "cls"
cout<<"Hello, world !"; system("cls");
// Afisari valori numerice in diferite formate
cout<<setw(5)<<23.0<<endl; // 23
cout<<hex<<123<<" "<<3456<<endl; //7b d80
cout<<dec<<123<<" "<<3456<<endl; //123 3456
cout<<1.1234567<<endl;//1.12346
cout<<12345.678<<endl;//12345.7
cout<<123456.78123<<endl;//123457
cout<<fixed<<123456.78123<<endl;//123456.781230
cout<<23.0<<endl;//23.000000
cout<<showpos<<23.0<<endl;//+23.000000
cout<<setprecision(2)<<123.34534<<endl;//+123.35
cout<<noshowpos<<23.0<<" "<<12345.678<<endl;//23.00 12345.68
// Afisarea continutului unui fisier
char c;
fstream f("date.in",ios::in);
while(f>>noskipws>>c) cout<<c;
f.close();
// Adaugarea unei linii in fisier
ofstream g("date.in",ios::app);
g<<endl<<"Linie adaugata"<<endl;
g.close();
// Extragerea numerelor dintr-un sir de caractere
float nr; char lin[]="-1866 22.12345 +21.3";
stringstream sin(lin); // fluxul "sin" se va defini dupa ce "lin" primeste continut
while(sin>>nr) cout<<nr<<" ";
// Generare numere aleatoare in functie de numarul de secunde care au trecut de la 1 ianuarie 1970
srand(time(NULL)); cout<<endl;
for(int i=1;i<10;i++) cout<<rand()%100<<" ";
// Afisarea datei si orei curente
time_t now = time(NULL); // returneaza numarul de secunde de la 1 ianuarie 1970
tm *p = localtime(&now); // creeaza o structura cu data si ora in functie de numarul de secunde din "now"
cout<<endl<<"Data curenta este "<<p->tm_mday<<"."<<1+p->tm_mon<<"."<<1900+p->tm_year;
cout<<" iar ora curenta "<<p->tm_hour<<":"<<p->tm_min<<":"<<p->tm_sec<<endl;
// tm_mon = 0,1,...,11 iar tm_year = numarul de ani dupa 1900
// Extragerea radacinii patrate
float radical=sqrt(26); cout<<endl<<radical<<endl; //5.10
// Determinarea valorilor maxime
int m=INT_MIN; long long M=LLONG_MAX;
cout<<m<<" "<<M<<endl; //-2147483648 9223372036854775807
// Afisarea textului cu alta culoare
HANDLE consola = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(consola, 14); // 14=galben
cout<<endl<<"Colegiul Bratianu";
SetConsoleTextAttribute(consola, 7); // 7=culoarea initiala
//0 BLACK, 1 BLUE, 2 GREEN, 3 CYAN, 4 RED, 5 MAGENTA, 6 BROWN, 7 LIGHTGRAY, 8 DARKGRAY
//9 LIGHTBLUE, 10 LIGHTGREEN, 11 LIGHTCYAN, 12 LIGHTRED, 13 LIGHTMAGENTA, 14 YELLOW, 15 WHITE
}