Functii+predefinite


 * material preluat de la ** @http://facultate.regielive.ro

** Funcţii matematice ** (headerul **  ** )

** Funcţii aritmetice ** ** Valori absolute ** ** int abs(int x); ** Returnează un întreg care reprezintă valoarea absolută a argumentului. ** long int labs(long int x); ** Analog cu funcţia abs, cu deosebirea că argumentul şi valoarea returnată sunt de tip long int. ** double fabs(double x); ** Returnează un real care reprezintă valoarea absolută a argumentului real.

** Funcţii de rotunjire ** ** double floor(double x); ** Returnează un real care reprezintă cel mai apropiat număr, fără zecimale, mai mic sau egal cu x (rotunjire prin lipsă). ** double ceil(double x); ** Returnează un real care reprezintă cel mai apropiat număr, fără zecimale, mai mare sau egal cu x (rotunjire prin adaos).

** Funcţii trigonometrice ** ** double sin(double x); ** Returnează valoarea lui sin(x), unde x este dat în radiani. Numărul real returnat se află în intervalul [-1, 1]. ** double cos(double x); ** Returnează valoarea lui cos(x), unde x este dat în radiani. Numărul real returnat se află în intervalul [-1, 1]. ** double tan(double x); ** Returnează valoarea lui tg(x), unde x este dat în radiani. ** Funcţii trigonometrice inverse ** ** double asin(double x); ** Returnează valoarea lui arcsin(x), unde x se află în intervalul [-1, 1]. Numărul real returnat (în radiani) se află în intervalul [-pi/2, pi/2]. ** double acos(double x); ** Returnează valoarea lui arccos(x), unde x se află în intervalul [-1, 1]. Numărul real returnat se află în intervalul [0, pi]. ** double atan(double x); ** Returnează valoarea lui arctg(x), unde x este dat în radiani. Numărul real returnat se află în intervalul [0, pi]. ** double atan2(double y, double x); ** Returnează valoarea lui tg(y/x), cu excepţia faptului ca semnele argumentelor x şi y permit stabilirea cadranului şi x poate fi zero. Valoarea returnată se află în intervalul [-pi,pi]. Dacă x şi y sunt coordonatele unui punct în plan, funcţia returnează valoarea unghiului format de dreapta care uneşte originea axelor carteziene cu punctul, faţă de axa absciselor. Funcţia foloseşte, deasemenea, la transformarea coordonatelor cartezine în coordonate polare.

** Funcţii exponenţiale şi logaritmice ** ** double exp(double x); ** ** long double exp(long double x); ** Returnează valoarea e ** double log(double x); ** Returnează logaritmul natural al argumentului ( ln(x) ). ** double log10(double x); ** Returnează logaritmul zecimal al argumentului (lg (x) ). ** double pow(double baza, double exponent); ** Returnează un real care reprezintă rezultatul ridicării bazei la exponent. ** double sqrt(double x); ** Returnează rădăcina pătrată a argumentului. ** double hypot(double x, double y); ** Funcţia distanţei euclidiene - returnează, deci lungimea ipotenuzei unui triunghi dreptunghic, sau distanţa punctului P(x, y) faţă de origine.

** Funcţii de generare a numerelor aleatoare ** ** int rand(void) ** **  ** Generează un număr aleator în intervalul [0, RAND_MAX]. ** 6.7.2. Funcţii de clasificare (testare) a caracterelor ** ==Au prototipul în headerul **  **. Toate aceste funcţii primesc ca argument un caracter şi returnează un număr întreg care este pozitiv dacă argumentul îndeplineşte o anumită condiţie, sau valoarea zero dacă argumentul nu îndeplineşte condiţia. ==

** int isalnum(int c); ** Returnează valoare întreagă pozitivă daca argumentul este literă sau cifră. Echivalentă cu: isalpha(c)||isdigit(c) ** int isalpha(int c); ** Testează dacă argumentul este literă mare sau mică. Echivalentă cu isupper(c)|| islower(c). ** int iscntrl(int c); ** Testează dacă argumentul este caracter de control (neimprimabil). ** int isdigit(int c); ** Testează dacă argumentul este cifră. ** int isxdigit(int c) **** ; ** Testează dacă argumentul este cifră hexagesimală (0-9, a-f, A-F). ** int islower(int c); ** Testează dacă argumentul este literă mică. ** int isupper(int c); ** Testează dacă argumentul este literă mare. ** int ispunct(int c); ** Testează dacă argumentul este caracter de punctuaţie (caracter imprimabil, dar nu literă sau spaţiu). ** int isspace(int c); ** Testează dacă argumentul este spaţiu alb (' ', '\n', '\t', '\v', '\r') ** int isprint(int c); ** Testează dacă argumentul este caracter imprimabil, inclusiv blancul.

** 6.7.3. Funcţii de conversie a caracterelor ** (prototip în **  ** ) ** int tolower(int c); ** Funcţia schimbă caracterul primit ca argument din literă mare, în literă mică şi returnează codul ASCII al literei mici. Dacă argumentul nu este literă mare, codul returnat este chiar codul argumentului. ** int toupper(int c); ** Funcţia schimbă caracterul primit ca argument din literă mică, în literă mare şi returnează codul acesteia. Dacă argumentul nu este literă mică, codul returnat este chiar codul argumentului. ** Funcţii de conversie din şir în număr **** (de citire a unui număr dintr-un şir) ** (prototip în ** ) ** ** long int atol(const char *//npr//); ** Funcţia converteşte şirul transmis ca argument (spre care pointează npr ) într-un număr cu semn, care este returnat ca o valoare de tipul long int. Şirul poate conţine caracterele '+'  sau '-' <span style="font-family: 'Times New Roman','serif'; font-size: 14.6667px;">. Se consideră că numărul este în baza 10 şi funcţia nu semnalizează eventualele erori de depăşire care pot apare la conversia din şir în număr. ** int atoi(const char *sir); ** <span style="font-family: 'Times New Roman','serif'; font-size: 14.6667px;">Converteste şirul spre care pointeaza sir <span style="font-family: 'Times New Roman','serif'; font-size: 14.6667px;"> într-un număr întreg. ** double atof(const char *//sir//); ** <span style="font-family: 'Times New Roman','serif'; font-size: 14.6667px;">Funcţia converteste şirul transmis ca argument într-un număr real cu semn (returnează valoare de tipul double). În secvenţa de cifre din şir poate apare litera 'e' <span style="font-family: 'Times New Roman','serif'; font-size: 14.6667px;"> sau 'E' <span style="font-family: 'Times New Roman','serif'; font-size: 14.6667px;"> (exponentul), urmată de caracterul '+' <span style="font-family: 'Times New Roman','serif'; font-size: 14.6667px;"> sau '-' <span style="font-family: 'Times New Roman','serif'; font-size: 14.6667px;"> şi o altă secvenţă de cifre. Funcţia nu semnalează eventualele erori de depăşire care pot apare.

** Funcţii de terminare a unui proces (program) ** (prototip în ** <process.h> ** ) ** void exit(int //status//); ** <span style="font-family: 'Times New Roman','serif'; font-size: 14.6667px;">Termină execuţia unui program. Codul returnat de terminarea corectă este memorat în constanta simbolică EXIT_SUCCES <span style="font-family: 'Times New Roman','serif'; font-size: 13.3333px;">, <span style="font-family: 'Times New Roman','serif'; font-size: 14.6667px;">iar codul de eroare - în EXIT_FAILURE. <span style="font-family: 'Times New Roman','serif'; font-size: 14.6667px;">Termină forţat execuţia unui program. ** int system(const char *//comanda//); ** prototip în <system.h>  Permite execuţia unei comenzi DOS, specificate prin şirul de caractere transmis ca parametru. =<span style="font-family: 'Times New Roman','serif';">Funcţii de intrare/ieşire(prototip în <stdio.h> <span style="font-family: 'Times New Roman','serif';">) = Streamurile (fluxurile de date) implicite sunt: stdin (fişierul, dispozitivul standard de intrare), stdout (fişierul, dispozitivul standard de ieşire), stderr (fişier standard pentru erori), stdprn (fişier standard pentru imprimantă) şi stdaux (dispozitivul auxiliar standard). De câte ori este executat un program, streamurile implicite sunt deschise automat de către sistem. În headerul <stdio.h> sunt definite şi constantele NULL (definită ca 0) şi EOF (sfârşit de fişier, definită ca -1, CTRL/Z). ** int getchar(void); ** <span style="font-family: 'Times New Roman','serif'; font-size: 14.6667px;">Citeşte un caracter (cu ecou) din fişierul standard de intrare (tastatură). ** int putchar(int c); ** <span style="font-family: 'Times New Roman','serif'; font-size: 14.6667px;">Afişează caracterul primit ca argument în fişierul standard de ieşire (monitor). ** char *gets(char *sir); ** <span style="font-family: 'Times New Roman','serif'; font-size: 14.6667px;">Citeşte un şir de caractere din fişierul standard de intrare (până la primul blank întâlnit sau linie nouă). Returnează pointerul către şirul citit. ** int puts(const char *sir); ** Afişează şirul argument în fişierul standard de ieşire şi adaugă terminatorul de şir. Returnează codul ultimului caracter al şirului (caracterul care precede NULL) sau -1 în caz de eroare. ** int printf(const char *format, ... ); ** Funcţia permite scrierea în fişierul standard de ieşire (pe monitor) a datelor, într-un anumit format. Funcţia returnează numărul de octeţi (caractere) afişaţi, sau –1 în cazul unei erori. q Succesiuni de caractere afişate ca atare **//__ Exemplu: __//** printf("\n Buna ziua!\n\n” ); //afişare:// Buna ziua! // q // Specificatori de format // care definesc conversiile care vor fi realizate asupra datelor de ieşire, din formatul intern, în cel extren (de afişare).  Un //specificator de format// care apare în parametrul fix poate avea următoarea formă:  ** % [-|c|][sir_cifre_eventual_punct_zecimal] una_sau_doua_litere **  **// - //** Implicit, datele se cadrează (aliniază) la dreapta câmpului în care se scriu. Prezenţa caracterului – determină cadrarea la stânga.   **// Şirul de cifre //** defineşte dimensiunea câmpului în care se scrie data. Dacă scrierea datei necesită un câmp de lungime mai mare, lungimea indicată în specificator este ignorată. Dacă scrierea datei necesită un câmp de lungime mai mică, data se va scrie în câmp, cadrată la dreapta sau la stânga (dacă apare semnul - ), completându-se restul câmpului cu caracterele nesemnificative implicite, adica spaţii. Şirul de cifre aflate dupa punct definesc precizia (numarul de zecimale cu care este afişat un numar real - implicit sunt afişate 6 zecimale). **// Literele //** definesc tipul conversiei aplicat datei afişate: ** c ** – Afişează un caracter ** s ** – Afişează un şir de caractere ** d ** – Afişează date întregi; cele negative sunt precedate de semnul -. ** o ** – Afişează date de tip int sau unsigned int în octal. ** x ****// sau //**** X ** - Afişează date de tip int sau unsigned int în hexagesimal. ** f ** –Afişează date de tip float sau double în forma: // parte_întreagă.parte_fract // ** e ****// sau //**** E ** -Afişează date de tip float sau double în forma: parte_întreagă.parte_fractionară exponent Exponentul începe cu e sau E şi defineşte o putere a lui zece care înmulţită cu restul numărului dă valoarea reală a acestuia. ** g ****// sau //**** G ** –Afişează o dată reală fie ca în cazul specificatorului terminat cu f, fie ca în cazul specificatorului terminat cu e. Criteriul de afisare se alege automat, astfel încât afişarea să ocupe un număr minim de poziţii în câmpul de afişare. ** l ** – Precede una din literele d, o, x, X, u. La afişare se fac conversii din tipul //long// sau //unsigned long//. ** L ** – Precede una din literele f, e, E, g, G. La afişare se fac conversii din tipul //long double//. ** int scanf(const char *format, ... ); ** Funcţia citeşte din fişierul standard de intrare valorile unor variabile şi le depune în memorie, la adresele specificate. Funcţia returnează numărul câmpurilor citite corect. Specificatorii de format care definesc conversiile aplicate datelor de intrare, din formatul extern, în cel intren (în care sunt memorate). Specificatorii de format sunt asemanători celor folosiţi de funcţia //printf//: ** c **//, //** s **// , //** d **// , //** o **// , //** x **// sau //** X **// , //** u **// , //** f **// , //** l **// , //** L **. ** int sprintf(char * **** sir_cu_format, **** const char *format, ... ); ** Funcţia permite scrierea unor date în şirul transmis ca prim argument, într-un anumit format. Valoarea returnată reprezintă numărul de octeţi (caractere) scrise în şir, sau –1 în cazul unei erori. ** int sscanf(char * **** sir_cu_format, **** const char *format, ... ); ** Funcţia citeşte valorile unor variabile din şirul transmis ca prim argument şi le depune în memorie, la adresele specificate. Returnează numărul câmpurilor citite corect. **//__ Exemplu: __//** Să se scrie următorul program (care ilustrează modalităţile de folosire a funcţiilor predefinite) şi să se urmărească rezultatele execuţiei acestuia. void main { int x=-34; int a=abs(x); cout<<"a="<<a<<'\n'; long int y=-566666; cout<<"labs(y)="<<labs(y)<<"fabs(-45.67)="<<fabs(-45.67)<<'\n'; cout<<"fabs(45.67)="<<fabs(45.67)<<'\n'; cout<<floor(78.99)<<'\n'; <span style="font-family: 'Times New Roman','serif'; font-size: 14.6667px;">//78// //cout<<floor(78.45)<<'\n';// 78 cout<<floor(-78.45)<<'\n'; <span style="font-family: 'Times New Roman','serif'; font-size: 14.6667px;">//-79// //cout<<ceil(78.99)<<'\n';// 79 cout<<ceil(78.45)<<'\n'; <span style="font-family: 'Times New Roman','serif'; font-size: 14.6667px;">//79// //cout<<ceil(-78.45)<<'\n';// -78 cout<<isalpha('8')<<'\n'; <span style="font-family: 'Times New Roman','serif'; font-size: 14.6667px;">0 //cout<<isalpha('f')<<'\n';// val diferita de zero cout<<isalpha('%')<<'\n'; <span style="font-family: 'Times New Roman','serif'; font-size: 14.6667px;">0 //cout<<tolower('D')<<'\n';// 100 (codul caracterului 'd') cout<<toupper('a')<<'\n'; <span style="font-family: 'Times New Roman','serif'; font-size: 14.6667px;">//65 (codul caracterului 'A')// //char s1[]="-56.234 h mk"; cout<<atol(s1)<<'\n'; //-56 cout<<atoi(s1)<<'\n'; <span style="font-family: 'Times New Roman','serif'; font-size: 14.6667px;">//-56// //cout<<atof(s1)<<'\n';// -56.234 cout<<atof("45E+3 n")<<'\n';<span style="font-family: 'Times New Roman','serif'; font-size: 14.6667px;">//45000// //cout<<"EXECUTIA COMENZII DOS DIR\n"; int cod_ret=system("dir"); cout<<"Val. cod retur="<<cod_ret<<'\n';// //int c;cout<<"Astept car:"; c=getchar;// Presupunem caracter introdus: e cout<<"Caracterul citit este:"<<putchar(c);<span style="font-family: 'Times New Roman','serif'; font-size: 14.6667px;">//Caracterul citit este: 101// 101=codul carcterului e cout<<'\n';puts(s1);cout<<'\n'; printf("Afisarea unui mesaj\n"); int intreg=-45; printf("VALOAREA VARIABILEI INTREG ESTE:%d\n", intreg); printf("VALOAREA VARIABILEI INTREG ESTE:%10d\n", intreg); printf("VALOAREA VARIABILEI INTREG ESTE:%-10d\n", intreg); double real=2.45; printf("VALOAREA VARIABILEI real ESTE:%f\n", real); printf("VALOAREA VARIABILEI real ESTE:%10.3f\n", real); printf("VALOAREA VARIABILEI real ESTE:%10.5f\n", real); printf("VALOAREA VARIABILEI real ESTE:%e\n", real); printf("VAL VAR real:%f si\neste mem. la adr.%x\n",real,&real ); printf("astept sir:");scanf("%s",s1); printf("Sirul citit este: %s \n", s1); char sir_f[100]; sprintf(sir_f,"Codul caracterului %c este:%d",c, (int)c); puts(sir_f); }
 * void abort; **
 * 1) // Parametrul fix // al funcţiei conţine:
 * 1) // Parametrii variabili // ai funcţiei sunt expresii. Valorile obţinute în urma evaluării acestora sunt afişate corespunzător specificatorilor de format care apar în parametrul fix. De obicei, parametrul fix conţine atât specificatori de format, cât şi alte caractere. Numărul şi tipul parametrilor variabili trebuie să corespundă specificatorului de format.
 * 1) // Parametrul fix // al funcţiei conţine:
 * 1) // Parametrii varaibili // reprezintă o listă de adrese ale variabilelor care vor fi citite, deci în această listă, numele unei varaibile simple va fi precedată de operatorul adresă ** & **.
 * 1) include <iostream.h>
 * 2) include <stdlib.h>
 * 3) include <math.h>
 * 4) include <ctype.h>
 * 5) include <stdio.h>