Documente Academic
Documente Profesional
Documente Cultură
B. Blocul de declarari
int -> numere intregi [-32000, 32000]
long -> numere intregi mai mari ca 32000 (int) sau peste 5 cifre
float -> numere reale
double -> numere reale mai mari si cu o precizie mai mare decat
cele float
unsigned -> numere natural [0, 65000]
char -> character, sisruri de caractere
La declarare se atribuie spatiu de memorie pentru variabilele
declarate.
1000 <- adresa la care va fi memorata var a
Ex: int a; => a
spatiul de memorie
D. Programul principal
void main(){
… Instructiunile programului principal…
getch();
}
MinGW CodeBlocks Devc++
Avem biblioteci la care se pune .h si biblioteci la care nu se pune .h.
Ex: #include<iostream>
#include<fstream>
#include<math.h>
#include<string.h>
Programul principal:
int main(){
… Instructiunile programului principal…
return 0;
}
OPERATORI MATEMATICI
+ adunare
- scadere
* inmultire
/ impartire, catul
% restul impartirii
Ex: 123/10=12 123/10=12.3(float)
123%10=3
INSTRUCTIUNI
A. Instructiunea alternativa
if (conditie) …Instructiuni1…
else …Instructiuni2…
In cazul in care conditia este adevarata se va executa setul de
Instructiuni1. In cazul in care conditia este falsa se va executa setul de
Instructiuni2.
Ex: if (nr>0) s=5+nr;
else{
nr=0-nr;
s=5+nr;
}
Ramura else este optionala => poate lipsi!
B. Instructiuni repetitive
1. Cu test initial
while (conditie_adevarata){
…Instructiuni…
}
Cat timp conditia este adevarata se vor executa Instructiunile. In
momentul in care conditia devine falsa, instructiunea repetitive cu test
initial, while, se opreste!
!!! Daca, conditia este falsa de la inceput, instructiunile nu se
executa deloc!!!
2. Cu test final
do{
…Instructiuni…
}while (conditie_adevarata);
Cat timp conditia este adevarata, se vor executa Instructiunile.
In momentul in care conditia devine falsa, instructiunea repetitive cu test
final, do…while, se opreste!
!!! Daca, conditia este falsa de la inceput, instructiunile se vor
executa o sigura data!!!
F. Alte instructiuni
cout<<”Mesaj”; => afiseaza un mesaj pe ecran
cin>>variabila; => preia valoarea introdusa de utilizator de la
tastatura si o atribuie variabilei
Ex: n=5;
cout<<”Numarul “<<n<<” este natural”;
Numarul 5este natural
VECTORI
Def.Vectorul este un tablou unidimensional. Are o singura dimensiune,
adica are doar coloane.Un vector are n elemente!
B. Citire
cout<<”Dati n “;
cin>>n;
for(i=1; i<=n; i++){
cout<<”Dati v[“<<i<<”]= “;
cin>>v[i];
}
n -> reprezinta dimensiunea partial, adica numarul efectiv de
casute/elemente din vector care vor fi completate cu valori.
n<=dimensiune_maxima!
C. Parcurgere
for(i=1; i<=n; i++)
… lucrez cu v[i]…
D. Afisare
for(i=1; i<=n; i++)
cout<<v[i]<<” “;
Daca trebuie sa afisez elemental de pe pozitia a treia
cout<<v[3]
ATENTIE!!!
ELEMENTUL => v[i]
POZITIA => i
E. Algoritmi
1. Cautare pe vector
a) Cautare directa
cout<<”Dati numarul cautat “;
cin>>x;
ok=0;(presupunem ca numarul cautat nu se afla in vector)
for(i=1; i<=n; i++)
if(v[i]==x) ok=1;
if(ok==1) cout<<”Da”;
else cout<<”Nu”;
Ex: V 3 5 2 9 7 11 10 4 21 12
x=2; ok=0;
I. i=1 (3==2) Nu
II. i=2 (5==2) Nu
III. i=3 (2==2) Da => ok=1
b) Cautare binara (vector sortat!!!)
V 2 5 7 8 10 13 21 25 33 36 40 41
p=1 u=12
x=31
p=1;
u=n;
m=(p+u)/2=(1+12)/2=6
v[m]=v[6]=13
13>31 Nu
13<31 Da => p=m+1=6+1=7
m=(p+u)/2=(7+12)/2=9
33>31 Da => u=m-1=9-1=8
m=(p+u)/2=(7+8)/2=7
21>31 Nu
21<31 Da => p=m+1=7+1=8
m=(p+u)/2=(8+8)/2=8
25>31 Nu
25<31 Da => p=m+1=8+1=9
p>u => STOP 31 nu se afla in vector!
cout<<”Dati x “;
cin>>x;
p=1;
u=n;
ok=0;
while(ok==0 && p<=u){
m=(p+u)/2;
if(x>v[m]) p=m+1;
else if(x<v[m]) u=m-1;
else ok=1;
}
if(ok==1) cout<<”Da”;
else cout<<”Nu”;
2. Sotare vector
for(i=1; i<=n-1; i++)
for(j=i+1; j<=n; j++)
if(v[i]>v[j]){ -> Ordonez crescator!
aux=v[i];
v[i]=v[j];
v[j]=aux;
}
Regula paharelor
H2O
SUC
1
3
aux
V 3 5 2 9 7 1 13 10 11 6
3
Ii. i=1
Ij. j=2 (v[1]>v[2]) adica (3>7) Nu
IIj. j=3 (v[1]>v[3]) adica (3>2) Da
aux=3;
v[1]=2;
v[3]=3;
2 5 3 9 7 1 13 10 11 6
3.
IIIj. j=4 (v[1]>v[4]) adica (2>9) Nu
IVj. j=5 (v[1]>v[5]) adica (2>7) Nu
Vj. j=6 (v[1]>v[6]) adica (2>1) Da
aux=2;
v[1]=1;
v[6]=2;
1 5 3 9 7 2 13 10 11 6
4. I
VIj. j=7 (v[1]>v[7]) adica (1>13) Nu
VIIj.j=8 (v[1]>v[8]) adica (1>10) Nu
VIIIj. j=9 (v[1]>v[9]) adica (1>11) Nu
IXj. j=10 (v[1]>v[710]) adica (1>6) Nu
Pe prima pozitie a fost adusa cea mai mica valoare.
IIi. i=2
Ij. j=3… completam casuta 2 cu urmatoarea cea mai mica valoare…
s.a.m.d
CREARE VECTOR
int k, v[100];
.....
k=0;
if (cond){ verificam daca elementul indeplineste conditia
k++;
v[k]=element;
}
15 15 21 16 3 54 26 34 7 41
x=33
33 15 21 16 3 54 26 34 7 41
15 21 16 3 54 54 26 34 7 41
1 2 3 4 5 6 7 8 9 10
15 21 16 3 33 54 26 34 7 41
1 2 3 4 5 6 7 8 9 10
15 21 16 3 33 54 26 34 7 41
1 2 3 4 5 6 7 8 9 10
15 21 16 3 54 26 34 7 41 41
1 2 3 4 5 6 7 8 9 10
15 21 16 3 54 26 34 7 41
1 2 3 4 5 6 7 8 9
cin>>k;
for(i=k; i<=n; i++)
v[i]=v[i+1];
n--;
3. Stergere de la sfarsit
IDEE: Scadem numarul de elemente cu o unitate si astfel eliminam
ultimul element din vector.
n--;
MATRICE
Def. O matrice este un tablou bidimensional. Are doua dimensiuni: linii
si coloane. O matrice are n*m elemente, iar daca este matrice patratica
are n*n elemente!
B. Citire
cout<<”Dati numarul de linii “;
cin>>n;
cout<<”Dati numarul de coloane “;
cin>>m;
for(i=1; i<=n; i++)
for(j=1; j<=m; j++){
cout<<”Dati a[“<<i<<”][“<<j<<”]= “;
cin>>a[i][j];
}
C. Parcurgere (operatii)
for(i=1; i<=n; i++)
for(j=1; j<=m; j++)
… lucrez cu a[i][j]…
D. Afisare
for(i=1; i<=n; i++){
for(j=1; j<=m; j++)
cout<<a[i][j]<<” “;
cout<<endl;
}
Daca vreau sa afisez elementul de pe linia 3 coloana 5
cout<<a[3][5];
ATENTIE!!!
ELEMENTUL = a[i][j]
LINIA = i
COLOANA = j
FISIERE
Fisierele sunt folosite pentru a facilita citirea de informatii, respectiv
scrierea rezultatelor si pastrarea lor.
#include<fstream.h>
A. Declarare
ifstream f(“nume_fisier.extensie”); -> fisier de citire
ofstream g(“nume_fisier.extensie”); -> fisier de scriere
Extensia fisierului poate fi: txt, in, out.
C. Scriere in fisier
g<<x;
f: 5
4 23 15 9 53
f>>n; n=5
for(i=1; i=n; i++){ I. i=1 x=4 lucrez cu 4(x)
f>>x; II. i=2 x=23 lucrez cu 23(x)
… lucrez cu x… III. i=3 x=15 lucrez cu 15(x)
} IV. i=4 x=9 lucrez cu 9(x)
V. i=5 x=53 lucrez cu 53(x)
II. Citirea a mai multor numere din fisier cand nu se stie numarul
acestora, adica nu se da n!
f: 4 23 15 9 53
while(f>>x){
… lucrez cu x…
}
Pentru fisiere avem si doua functii speciale:
eof() -> end of file. Returneaza true cand se ajunge la sfarsitul fisierului.
eoln() -> end of line. Returneaza true cand se ajunge la sfarsitul liniei.
Ex: while(!f.eof())
while(!f.eoln()){
f>>x;
… lucrez cu x…
}
II. Nu se cunoaste n
k=0;
while(f>>x){ x1 x2 x3 … xn
k++;
v[k]=x;
}
SIRURI DE CARACTERE
#include <string.h>
A. Declarare
char c; -> declara un singur character (ex: „a‟, „2‟, …)
char s[25]; -> declara un sir de caractere (ex: „informatica‟, „bac la info‟…)
B. Citire
cin>>c;-> asa citesc un singur character. Nu am nevoie de cin.get!
cin>>s;-> asa citesc un sir de caractere daca stiu ca nu am spatii in sir!
cin.get(s,25); -> asa citesc un sir de caractere cu spatii!
Daca am de citit mai multe siruri de caractere cu spatii:
char s1[25], s2[30], s3[15];
…
cin.get(s1,25);
cin.get();
cin.get(s2,30);
cin.get();
cin.get(s3,15);
C. Afisare
cout<<c;
cout<<s; -> indifferent de cum este sirul de caractere!
s1=”informatica”;
s2=”bac”;
strcpy(s1,s2); => s1=”bac”
strcpy(s1+2,s1+5); =>pastrez primele 2 caractere din s1 si copiezi
din s1 de pe pozitia 5! => s1=”inmatica”
3. Strncpy(s1,s2,nr) -> copiaza in s1 nr caractere din s2.
Ex: s2=”informatica”;
strncpy(s1,s2,4); => s1=”info”;
s1=”informatica”;
s2=”bac”;
strncpy(s1,s2,2); => s1=”ba”
s=”bacalaureat”;
c=‟a‟;
nou= strchr(s,c); => nou=”acalaureat”
Aceasta functie este utilizata si pentru a stabili daca un caracter din sir
este sau nu vocala:
Ex: if(strchr(“AEIOUaeiou”, s[i]) !=0) => s[i] este vocala
if(strchr(“AEIOUaeiou”, s[i]) ==0) => s[i] nu este vocala
s=”bacalaureat”
c=‟a‟;
nou=strrchr(s,c); => nou=”at”
while(s[0]==‟ „)
strcpy(s,s+1);
2. De la sfarsitul sirului
while(s[strlen(s)-1]==‟ „)
strcpy(s+strlen(s)-1, s+strlen(s));
for(i=1;i<=strlen(s)-1;i++)
if(s[i]==‟ „ && s[i+1]==‟ „)
strcpy(s+i, s+i+1);
Algoritmi
1. Algoritmul de divizori.
COD:
for(div=2;div<=n/2;div++)
if(n%div==0) ...
COD:
#
#
int v[50],min,max,i;
void main(){
Citesc n;
Citesc vectorul v;
min=v[1];
max=v[1];
for(i=2;i<=n;i++){
if(v[i]>max) max=v[i];
if(v[i]<min) min=v[i];
}
cout<<max<<” „<<min;
}