Sunteți pe pagina 1din 8

Programare Procedural (Citire/Scriere/Instructiuni)

Funciile de citire i scriere n C


1. Scrierea pe ecran Pentru scrierea datelor pe ecran se utilizeaz funcia: int printf(format, expresie_1, expresie_2,..., expresie_n); Aceast funcie returneaz o valoare ntreag care reprezint numrul de caractere afiate. Parametrul format este un ir de caractere care poate conine specificatori de format. Specificatorii de format sau descriptorii indic faptul c, n locul n care se afl va fi afiat valoarea unei expresii (sau variabile al crei tip este dat de ctre specificatorul de format. !n specificator de format ncepe cu " i conine o liter care indic tipul variabilei. Exemplu: "d, "f expresie_1, expresie_2,..., expresie_n reprezint expresiile a cror valoare va fi inserat n irul de caractere format la poziiile indicate de ctre specificatorii de format. #orespondena ntre specificatorii de format i expresii se face n ordine, de la st$nga la dreapta. %umrul de specificatori de format trebuie s fie egal cu numrul de expresii a cror valoare se dorete afiat. Prototipul funciei printf se gsete n fiierul antet stdio.h care trebuie inclus la nceputul programului. Exemplu: Afiarea a dou numere unul real i unul ntreg i a sumei lor
# /* exemplu printf*/ #include <stdio.h> int main() printf printf printf printf printf 1,,, 1,,); printf printf printf return ; (!"haracters# $c $c %n!, &a&, '(); (!)ecimals# $d $ld%n!, 1*++, '(,,,,-); (!.recedin/ 0ith 1lan2s# $1,d %n!, 1*++); (!.recedin/ 0ith 3eros# $,1,d %n!, 1*++); (!4ome different radixes# $d $x $o $#x $#o %n!, 1,,, 1,,, 1,,, (!floats# $5.2f $6.,e $7 %n!, 8.151', 8.151', 8.151'); (!9idth tric2# $*d %n!, (, 1,); (!$s %n!, !: strin/!); ,;

2. Citirea de la tastatur Pentru citirea datelor de la tastatur se utilizeaz funcia int scanf(format, adresa <ar_1, adresa <ar_2,...., adresa <ar_n); &uncia scanf returneaz o valoare ntreag reprezent$nd numrul de variabile citite corect. Parametrul format conine o list de specificatori de format, care indic tipul variabilelor citite. Adresa unei variabile poate fi accesat utiliz$nd operatorul de refereniere '. Prototipul funciei scanf se gsete de asemenea n fiierul antet stdio.h Exemplu: #itirea unei variabile reale pe ( octei i a unei variabile ntregi:
#include<stdio.h> <oid main() dou1le a; int n; scanf(=$lf $d>, ?a, ?n );

ista principalilor speci!icatori de !rormat )n continuare sunt listai principalii specificatori de format. Pentru informaii suplimentare i ali specificatori vezi curs. Speci!icator "d "u "f "lf "-f "e sau "0 "x Semni!icaie *ariabil de tip ntreg pe + octei (int *ariabil de tip unsigned int *ariabil real pe , octei (float *ariabil ral pe ( octei (double *ariabil real pe ./ octei *ariabil real n form exponenial (pe , octei *ariabil ntreag n form 1exazecimal (baza ., n care pentru cifrele 1exazecimale ./, .., .2, .3, .+ se folosesc literele mici a, b, c, d, e #a i "x dar se folosesc literele mari n loc de cele mici

"4

"c "s

*ariabil de tip caracter (c1ar (inclusiv spaii albe *ariabil de tip ir de caractere

"#ser$aii% Prin utilizarea unui numr dup semnul " n specificatorul de format la afiarea cu printf se poate indica numrul minim n de caractere pe care se realizeaz afiarea. 5ac numrul de caractere necesare pentru afiarea valorii expresiei este mai mic dec$t n, se completeaz restul de caractere cu spaii albe. 6odul de aliniere este implicit la dreapta. Exemplu: printf(=@umerele $5d,$5d,$5d>,a,1,c);

*ariabilele a,1,c de tip ntreg vor fi afiate pe minim + caractere. 5ac se dorete afiarea unei variabile reale cu un anumit numr de zecimale, se utilizeaz pentru aceasta dup " un numr real a crui parte zecimal indic numrul de zecimale afiate (precizia . 5ac numrul de zecimale al variabilei afiate este mai mare dec$t precizia, atunci numrul afiat se rotun7ete. Exemplu: printf(=@umarul real $+.5f>,x); *ariabila x va fi afiat pe minim 8 caractere cu exact + zecimale. Pentru alinierea la st$nga a variabilelor afiate, se insereaz n specificatorul de format, imediat dup semnul " caracterul 9. Exemplu: printf(=@umarul xA$B(.2lf>,x); Pentru trecerea la urmtorul r$nd se folosete n irul de caractere %n Pentru introducerea caraterului tab se folosete %t

/* exemplu scanf */ #include <stdio.h> int main () char str CD,E; int i;

printf (!7nter Four familF name# !); scanf (!$s!,str); printf (!7nter Four a/e# !); scanf (!$d!,?i); printf (!Gr. $s , $d Fears old.%n!,str,i); printf (!7nter a hexadecimal num1er# !); scanf (!$x!,?i); printf (!Hou ha<e entered $#x ($d).%n!,i,i); return ,; ;

&atrice

'e!iniie : matrice este un tablou bidimensional cu m linii i n coloane. 5ac A este o matrice, A;i<;j< reprezint elementul de pe linia i i coloana j.

a // a ./ A= a m9.,/

a /. a .. a m9.,.

a /,n 9. a .,n 9. ; A[i][j] = aij; a m9.,n 9.

: matrice ptratic este o matrice cu acelai numr de coloane i linii (deci m = n . 5iagonala principal a unei matrice ptratice este format din elementele A;i<;i<, i= /, n 9 . > 5iagonala secundar a unei matrice ptratice este format din elementele A;i<;n9i9.<, i= /, n 9 . >

5iagonala principal:
a // a n ., / a /,n . a n .,n .

5iagonala secundar:
a // a n ., / a /,n . a n .,n .

'eclararea unui ta#lou Pentru a declara un tablou avem urmtoarele forme generale:
tip numeCdim1ECdim2E;

Exemplu%

int matriceC2,EC2,E;

Parcurgerea matricilor &ie matricea mat;<;< de dimensiuni m, n (m linii, n coloane . Putem parcurge elementele matricii n dou moduri: (a parcurg pe r$nd fiecare linie (parcurgerea pe linii , (b parcurg pe r$nd fiecare coloan.

Exemple% (a Parcurgerea pe linii:


for(iA,;i<m;i66) for(IA,;I<n;I66) printf(=$(dJ, matCiECIE); printf(=%nJ); ;

Acest bloc for afieaz pe ecran elementele matricei sub form de tablou bidimensional. Parcurgerea matricilor ptratice. #onsider m = n, artunci mat;<;< este matrice ptratic . (a Parcurgerea elementelor de pe diagonala principal:
for (iA,;i<n;i66) instrucKiuni folosind elementul matCiECiE;

(b Parcurgerea elementelor de pe diagonala secundar:


for (iA,;i<n;i66) instrucKiuni folosind elementul matCiECnBiB1E;

(c Parcurgerea elementelor de deasupra diagonalei principale (fr elemetele digonalei :


a // a n ., / a /,n . a n .,n .

for (iA,;i<n;i66) for (IAi61;I<n;I66) printf(=$d>,aCiECIE); (d Parcurgerea elementelor de sub diagonala principal (fr elementele diagonalei :

a // a n ., /

a /,n . a n .,n .

for (iA,;i<n;i66) for(IA,; I < i;I66) printf(=$d>,aCiECIE);

(e Parcurgerea elementelor de deasupra diagonalei secundare (fr elementele diagonalei :


a // a n ., / a /,n . a n .,n .

for(iA,;i<nB1;i66) for(IA,;I< nBiB1;I66) printf(=$d>,aCiECIE); (f Parcurgerea elementelor de sub diagonala secundar (fr elementele diagonalei :

a // a n ., /

a /,n . a n .,n .

for (iA1;i<n;i66) for(IAnBi;I< n;I66) printf(=$d>,aCiECIE);

(ema

1. #itii o variabil de tip int i verificai ce se nt$mpl dac se afiaz utiliz$nd diferii specificatori de format ("d, "f, "lf, "c, "x . *erificai acelai lucru i pentru o variabil de tip dou1le utiliz$nd specificatorii de format ("f, "lf, "d, "e . 2. ? se citeasc de la tastatur o variabil de tip dou1le. ? se verifice dac valoarea citit are partea real nul (este de fapt o valoare ntreag . 3. ? se afieze codul A?#@@ pentru litere i cifre. (:bservaie: codul A?#@@ asociaz fiecrui caracter un numr ntreg. Pentru literele alfabetului codurile A?#@@ sunt consecutiveA . Preferabil afiare frumoas sub form de tablou. +. ? se citeasc un ir de litere i s se ordoneze n ordine lexicografic (de la BaC la BzC 5. ?e citete un ir de variabile de tip char. ? se afieze c$te dintre ele sunt litere. ,. ? se citeasc un numr de cel puin , cifre i s se afieze media aritmetic a cifrelor sale cu o precizie de + zecimale. 7. ? se afieze primele n numere (divizibile cu 3 , c$te cinci pe linie. )ntre dou cifre pe aceeai linie s fie un tab, iar numerele s fie afiate pe minim + caractere. (. ? se citeasc o matrice de valori reale. ? se calculeze media aritmetic a elementelor nenule de pe diagonala principal i s se afieze n form exponenial. D. ? se calculeze maximele pe linii dintr9o matrice de ntregi i s se afieze aceste maxime pe o linie, pe minim + caractere, desprite prin tab9uri.

S-ar putea să vă placă și