Clasa a V-a
5. Analiza eficienei (complexitii) algoritmului eficiena unui algoritm are n vedere att
numrul de operaii executate de acesta ct i spaiul de memorie necesar a fi ocupat pe durata
execuiei algoritmului.
1
Lecia 1 - Elemente de baz ale limbajului C++. Lucrul cu fiiere text.
Clasa a V-a
a) variabile
O variabil are alocat o zon de memorie, are un nume, un tip i o valoare ataat.
Dup tipul lor, datele pot fi: date numerice si date de tip caracter.
Operatii posibile cu variabile de tip numeric: * (nmulire) , / (div, ctul mpririi), % (mod, restul
mpririi), + (adunare), - (scdere)
Operatii posibile cu variabile de tip numeric: * (nmulire) , / (div, ctul mpririi), % (mod, restul
mpririi), + (adunare), - (scdere)
2
Lecia 1 - Elemente de baz ale limbajului C++. Lucrul cu fiiere text.
Clasa a V-a
Expresiile
O expresie este format dintr-o succesiune de operanzi intercalai de operatori, care respect reguli
sintactice i de asociere.
Expresie de tip caracter: c + a A (transforma caracterul litera mare memorat in variabila c din litera
mare in litera mica)
operaia de atribuire permite efectuarea de calcule; este operaia prin care o variabil primete o
valoare constant sau rezultatul evalurii unei expresii.
ATRIBUIREA NU ESTE EGALITAEA MATEMATIC!!!
variabila = expresie;
Intotdeauna, in partea stanga a unei atribuiri trebuie sa fie o variabila si nu o expresie (variabila are
memorie alocata, expresia NU are)
Ex:
a = b + 1; nu este echivalent cu b + 1 = a;
calculul radicalului
#include <cmath>
....
int n, x;
....
x = sqrt(n); //va atribui lui x cel mai mare numar pentru care x2<=n (daca n=28 atunci x=5)
3
Lecia 1 - Elemente de baz ale limbajului C++. Lucrul cu fiiere text.
Clasa a V-a
if (expresie logica)
//instructiuni ramura DA
else //instructiuni ramura NU
Expresiile logice au rezultat valori de adevar (valoare nenula adevarat, valarea 0 fals)
! && 0 1 || 0 1
0 1 0 0 0 0 0 1
1 0 1 0 1 1 1 1
Ex:
x [a,b] <=> (x>=a && x<=b)
Instruciuni repetitive:
while (expresie logica) do { for (i = exp_init; i <= exp_fin; i++)
//instructiuni //instructiuni // instructiuni
} while (expresie logica);
Aplicaii
1. Cifra de control a unui numr se obine calculnd suma cifrelor sale. Dac aceast valoare are mai
mult de o cifr se repet procedeul pentru sumele obinute pn cnd se obine un numr cu o
singur cifr, care reprezint cifra de control.
Ex: n = 1891, s = 1 + 8 + 9 + 1 = 29, s = 2 + 9 = 11, s = 1 + 1 = 2 care este cifra de control a lui 1891
a) Se citeste de la tastatur un numr natural n < 1017. S se afieze cifra de control a lui n.
b) S se determine cte numere mai mici strict dect n au aceeai cifr de control ca i n.
2. Din fiierul text date.in se citesc a i b dou numere naturale ((0 a , b 2.000.000.000, a 0). S
se scrie n date.out ultima cifr a lui a ridicat la puterea b.
4
Lecia 1 - Elemente de baz ale limbajului C++. Lucrul cu fiiere text.
Clasa a V-a
3. S se determine numrul ptratelor perfecte cuprinse n intervalul nchis [a, b], cu a, b doua
numere naturale citite din fisierul text patrate.in (1 a < b 1.000.000). Scriei n fiierul de ieire
patrate.out pe prima linie numrul de ptrate din interval iar pe linia urmtoare, separate prin cte
un spaiu, n ordine cresctoare, aceste ptrate.
4. Se citete din fiierul cifre.in un numr natural n (1 n 1.000.000). S se scrie n cifre.out, pe
prima linie, numrul de cifre pe care l-ar avea irul tuturor numerelor de la 1 la n scrise unul dup
cellalt, n ordine cresctoare.
De ex., dac n = 23, irul 1234567891011121314151617181920212223 are 37 cifre.
5. Se citete din fiierul date.in un numr natural n (1 n 1.000.000). S se scrie n date.out, pe o
linie, separate prin cte un spaiu, numerele mai mici sau egale cu n care au un numr impar de
divizori.
6. Se citesc din fiierul text cifre.in n, un numar natural nenul (1 n 100.000) apoi, din linia
urmtoare, n caractere cifr aflate pe poziii alturate, fr spaii. S se scrie n fiierul de ieire
cifre.out ctul i restul mpririi sumei cifrelor impare la numrul cifrelor pare nenule. Cele dou
valori vor fi scrise pe o linie separate prin spaiu.
Transformarea unui caracter cifra in cifra pe care o reprezint: cif = c 0;
cifre.in cifre.out Explicatii
20 4 7 Suma cifrelor impare = 1+3+9+9+1+7+9 = 39
12002394941002847092 Numarul cifrelor pare nenule = 8
39 /8 = 4; 39 % 8 = 7
Tema
Trimitei soluiile pe adresa mirela.tibu@gmail.com sub forma unei arhive denumit cu numele vostru.
Creai arhiva urmnd paii:
1. Creai un folder cu numelevostru_tema1
2. Copiati una cte una sursele main.cpp n acest folder i redenumii-le cu numele problemei
3. Arhivai acest folder pastrand numele arhivei identic cu al folderului
4. Ataai arhiva la email-ul pe care l trimitei la adresa mirela.tibu@gmail.com
SUCCES!