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
#include<stdio.h> void main() { int a 2!; float " #.1$; printf(%&vem a 'd, " 'f si a(" 'f suma lor),a,",a("); *

+, exemplu printf,+ #include <stdio.h> int main() { printf (-.haracters/ 'c 'c 0n-, 1a1, 23); printf (-4ecimals/ 'd 'ld0n-, 1566, 23!!!!7); printf (-8recedin9 :ith "lan;s/ '1!d 0n-, 1566);

printf printf 1!!, 1!!); printf printf printf return *

(-8recedin9 :ith <eros/ '!1!d 0n-, 1566); (-=ome different radixes/ 'd 'x 'o '#x '#o 0n-, 1!!, 1!!, 1!!, (-floats/ '$.2f '(.!e '> 0n-, #.1$12, #.1$12, #.1$12); (-?idth tric;/ ',d 0n-, 3, 1!); (-'s 0n-, -& strin9-); !;

2. Citirea de la tastatur Pentru citirea datelor de la tastatur se utilizeaz funcia int scanf(format, adresa var_1, adresa var_2,...., adresa var_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> void main() { dou"le 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 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

"e sau "0 "x

*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 *ariabil de tip caracter (c1ar (inclusiv spaii albe *ariabil de tip ir de caractere

"4 "c "s

"#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(%Aumerele '$d,'$d,'$d),a,",c);

*ariabilele a,",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(%Aumarul real '6.$f),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(%Aumarul x 'B3.2lf),x); Pentru trecerea la urmtorul r$nd se folosete n irul de caractere 0n Pentru introducerea caraterului tab se folosete 0t

+, exemplu scanf ,+ #include <stdio.h> int main () { char str CD!E; int i; printf (->nter Four familF name/ -); scanf (-'s-,str); printf (->nter Four a9e/ -); scanf (-'d-,@i); printf (-Gr. 's , 'd Fears old.0n-,str,i); printf (->nter a hexadecimal num"er/ -); scanf (-'x-,@i); printf (-Hou have entered '#x ('d).0n-,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(i !;i<m;i(() { for(I !;I<n;I(() printf(%'3dJ, matCiECIE); printf(%0nJ); *

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 (i !;i<n;i(() instrucKiuni folosind elementul matCiECiE;

(b Parcurgerea elementelor de pe diagonala secundar:


for (i !;i<n;i(() instrucKiuni folosind elementul matCiECnBiB1E;

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


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

for (i !;i<n;i(() for (I i(1;I<n;I(() printf(%'d),aCiECIE); (d Parcurgerea elementelor de sub diagonala principal (fr elementele diagonalei :

a // a n ., /

a /,n . a n .,n .

for (i !;i<n;i(() for(I !; I < i;I(() printf(%'d),aCiECIE);

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


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

for(i !;i<nB1;i(() for(I !;I< nBiB1;I(() printf(%'d),aCiECIE); (f Parcurgerea elementelor de sub diagonala secundar (fr elementele diagonalei :

a // a n ., /

a /,n . a n .,n .

for (i 1;i<n;i(() for(I nBi;I< n;I(() 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 dou"le utiliz$nd specificatorii de format ("f, "lf, "d, "e . 2. ? se citeasc de la tastatur o variabil de tip dou"le. ? 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