Date
Datele cu care lucreaza un algoritm
(scris in pseudocod) sunt:
·
valori intregi: 12, -5, 17
·
valori reale: 3.14, -1005.25, … ; observati ca folosim punct zecimal si nu
virgula ca in notatia de la matematica
·
valori logice: adevarat (true) si fals (false)
·
siruri de caractere: “introdu valoarea:”, “rezultatul este:”
Variabile
O variabila este un simbol care se
caracterizeaza prin:
·
nume; se noteaza cu combinatii de litere sau
cifre dar intotdeauna primul caracter este litera: a, Beta, nr1, nr2
·
tip de data: intreg, real, sir de caractere, logic
·
valoare: functie de tipul de data asociat, o
variabila poate avea valori din cele de mai sus; valoarea memorata se poate
schimba, de unde si numele de variabila;
Practic, o variabila se comporta ca o
cutie ce poate fi folosita doar pentru ceva anume: valorile intregi in
cutii pentru valori intregi si valori reale in cutii pentru valori reale; doar
nu puneti zahar intr-o cutie de pantofi. .
Din acest motiv, la inceputul
algoritmului nostru in pseudocod trebuie sa specificam cu ce variabile lucram
si ce tip au, ca in exemplul de mai jos:
intreg m,n
real x,y.z
logic ok, exista, este
Expresii
Expresiile sunt foormate din operatori
si operanzi. Formeaza expresie urmatoarele
·
o variabila
·
variabila operator variabila
·
expresie operator expresie
·
operator expresie (cazul operatorilor unari de
genul - (5+3) )
Dintre operatorii folositi
vom vorbi acum numai de cei intregi (care
se folosesc numai pentru operanzi intregi):
·
semnul ” - ” se foloseste pentru
scaderi sau ca operator unar
·
semnul ” + ” se foloseste pentru
adunari
·
semnul ” * ” se
foloseste pentru inmultiri
·
semnul ” / ” se foloseste pentru impartiri
·
semnul ” % ” se foloseste pentru a obtine restul impartirii primului
operand la cel de al doilea
o a % b = restul
impartirii lui a la b
o a % 2 = restul
impartirii lui a la 2, care este 1 daca a este impar si 0 daca a este par
o a % 10 = restul
impartirii lui a la 10, care este intotdeauna ultima cifra a lui a, cifra unitatilor
·
prioritatea operatiilor este aceeasi ca in matematica; mai intai
inmultirile si impartirile si apoi adunarile si scaderile
·
se pot folosi si paranteze pentru expresiile mai complicate, dar numai
perechi de paranteze rotunde
·
atenție la ordinea operațiilor si folosirea parantezelor rotunde (ex. ecuația
de gradul 2):
o x1=(-b+
radical(b*b-4*a*c))/(2*a)
1. Citire datelor
Utilizare: Se face cu ajutorul
fluxului standard de intrare: cin.
Forma generala:
cin>>v1>>v2>>….>>vn;
<=>
cin>>v1;
cin>>v2;
…………….
cin>>vn;
[
>> ] – se numeste operator de intrare.
v1,
v2, ……. ,vn => sunt variabile.
2. Scrierea datelor
Utilizare: Se face cu ajutorul
fluxului standard de iesire: cout.
Forma generala:
cout<<E1<<E2<<….<<En;
<=>
cout<<E1;
cout<<E2;
………………..
cout<<En;
[
<< ] – se numeste operator de iesire.
E1,
E2, ……. ,En => sunt expresiide forma:
-
nume de variabila => se afisaza valoarea variabilei;
-
constanta => numerica, caracter, sir de caractere;
ex:
cout<<”10 5″<<”+”<<”15″ =>
105+15;
-
canstanta endl => folosita pentru
trecerea la rand nou;
ex:
cout<<5<< endl;
cout<<7;
Expresii aritmetice logice => se afiseaza
rezultatul evaluarii expresiei;
Apel de fundtie => se afiseaza
rezultatul returnat de funcie;
Interschimbarea a 2 numere
Fie a si b
aux=a;
a=b;
b=aux;
aux=a;
a=b;
b=aux;
Numarul maxim
Fie n nr de numere
max=0
for(i=1;i<=n;i++)
{
cin>>a;
if(a>max)
{
max=a;
}
}
max=0
for(i=1;i<=n;i++)
{
cin>>a;
if(a>max)
{
max=a;
}
}
Numarul minim
Fie n nr de numere
min=99999
for(i=1;i<=n;i++)
{
cin>>a;
if(a<max)
{
min=a;
}
}
min=99999
for(i=1;i<=n;i++)
{
cin>>a;
if(a<max)
{
min=a;
}
}
Obtinerea cifrelor dintrun nr de 4 cifre
Fie x nr de 4 cifre
d=x%10 cifra a 4a
c=x/10%10 cifra a 3a
b=x/100%10 cifra a 2a
a=x/1000%10 prima cifra
d=x%10 cifra a 4a
c=x/10%10 cifra a 3a
b=x/100%10 cifra a 2a
a=x/1000%10 prima cifra
}
Prelucrarea cifrelor
Fie x;
while(x!=0)
{
cifra=x%10;
*prelucrare cifra;
x/=10;
}
while(x!=0)
{
cifra=x%10;
*prelucrare cifra;
x/=10;
}
Cifra maxima
Fie x;
cmax=0;
while(x!=0)
{
if(x%10>cmax)
{
cmax=x/10;
}
x/=10;
}
cmax=0;
while(x!=0)
{
if(x%10>cmax)
{
cmax=x/10;
}
x/=10;
}
Cifra minima
Fie x;
min=10;
while(x!=0)
{
if(x%10<min)
{
min=x%10;
}
x/=10;
}
min=10;
while(x!=0)
{
if(x%10<min)
{
min=x%10;
}
x/=10;
}
Numarul de cifre
Fie x;
cate=0;
while(x!=0)
{
cate++;
x/=10;
}
cate=0;
while(x!=0)
{
cate++;
x/=10;
}
Suma cifrelor unui numar
Fie x;
s=0;
while(x!=0)
{
s+=x%10;
x/=10;
}
s=0;
while(x!=0)
{
s+=x%10;
x/=10;
}
Oglinditul unui numar
Fie x;
og=0;
while(x!=0)
{
og=og*10+x%10;
x/=10;
}
og=0;
while(x!=0)
{
og=og*10+x%10;
x/=10;
}
Prima cifra
Fie x;
while(x>9)
{
x/=10;
}
{
x/=10;
}
Prelucrarea divizorilor unui numar
Fie x
for(i=2;i<=x/2;i++)
{
if(x%i==0)
{
*prelucrare divizor;
}
}
for(i=2;i<=x/2;i++)
{
if(x%i==0)
{
*prelucrare divizor;
}
}
Testul de numar prim
Fie x
for(d=3,prim=(x==2||x%2==1),r=sqrt(x);d<=r&&prim;d+=2)
{
if(x%d==0)
{
prim=0;
}
}
if(prim!=0)
{
*nr prim;
}
else
{
*nr nu este prim;
}
for(d=3,prim=(x==2||x%2==1),r=sqrt(x);d<=r&&prim;d+=2)
{
if(x%d==0)
{
prim=0;
}
}
if(prim!=0)
{
*nr prim;
}
else
{
*nr nu este prim;
}
Descompunerea in factori primi
Fie x;
d=2;
while(x>1)
{
p=0;
while(x%d==0)
{
p++;
}
if(p!=0)
{
*prel
}
d++;
}
d=2;
while(x>1)
{
p=0;
while(x%d==0)
{
p++;
}
if(p!=0)
{
*prel
}
d++;
}
Cel mai mare divizor comun a 2 nr
Fie a si b;
while(b!=0)
{
r=a%b;
a=b;
b=r;
}
cmmdc=a;
while(b!=0)
{
r=a%b;
a=b;
b=r;
}
cmmdc=a;
Cel mai mic multiplu comun
cmmmc=(a*b)/cmmdc;
Schimbarea unui numar din baza 10 in baza B
Fie x10
b10=0;p=1;
while(x10!=0)
{
b10=b10+(x10%b)*p;
p*=10;
x/=b;
}
b10=0;p=1;
while(x10!=0)
{
b10=b10+(x10%b)*p;
p*=10;
x/=b;
}
Schimbarea unui numar din baza B in baza 10;
fie b10;
pb=1;x10=0;
while(b10!=0)
{
x10+=b10%10*pb;
pb*=B;
b10/=10;
}
pb=1;x10=0;
while(b10!=0)
{
x10+=b10%10*pb;
pb*=B;
b10/=10;
}
}
Vectori
{
Citire
{
Citire
Fie n nr elemente
for(i=1;i<=n;i++)
{
cin>>x[i];
}
for(i=1;i<=n;i++)
{
cin>>x[i];
}
Scriere
Fie n nr elemente
for(i=1;i<=n;i++)
{
cout<<x[i];
}
for(i=1;i<=n;i++)
{
cout<<x[i];
}
Elementul minim
Fie n nr elemente
min=x[1];
for(i=2;i<=n;i++)
{
if(x[i]<min)
{
min=x[i];
}
}
Elementul maxim
min=x[1];
for(i=2;i<=n;i++)
{
if(x[i]<min)
{
min=x[i];
}
}
Elementul maxim
Fie n nr elemente
max=x[1];
for(i=2;i<=n;i++)
{
if(x[i]>max)
{
max=x[i];
}
}
max=x[1];
for(i=2;i<=n;i++)
{
if(x[i]>max)
{
max=x[i];
}
}
Sortare prin selectie directa (crescator)
fie x[100],n nr elemente
for(i=1;i<=n;i++)
{
for(j=i+1;j<=n;j++)
{
if(x[i]>x[j])
{
aux=x[i];
x[i]=x[j];
x[j]=aux;
}
}
}
for(i=1;i<=n;i++)
{
for(j=i+1;j<=n;j++)
{
if(x[i]>x[j])
{
aux=x[i];
x[i]=x[j];
x[j]=aux;
}
}
}
Sortare prin metoda bulelor
fie x[100],n;
do
{
ok=1;
for(i=1;i<=n-1;i++)
{
if(x[i]>x[i+1])
{
aux=x[i];
x[i]=x[i+1];
x[i+1]=aux;
ok=0;
}
}
}while(ok==0);
{
ok=1;
for(i=1;i<=n-1;i++)
{
if(x[i]>x[i+1])
{
aux=x[i];
x[i]=x[i+1];
x[i+1]=aux;
ok=0;
}
}
}while(ok==0);
Adaugare element pe pozitia p;
n++;
for(i=n;i>p;i–)
{
x[i]=x[i-1];
}
x[p]=E;
for(i=n;i>p;i–)
{
x[i]=x[i-1];
}
x[p]=E;
Stergerea elementului de pe poz p;
for(i=p;i<=n;i++)
{
x[i]=x[i+1];
}
n–;
}
{
x[i]=x[i+1];
}
n–;
}
Cautarea scventiala
Fie x[100];
ap=0; i=1;
while (i<=n && ap==0)
{ if (x[i]==E)
{ ap=1;
}
i++;}
if (ap==1)
{cout<<”exista”;
else
cout<<”nu exista”;
}
Cautarea binara
Fie x[100];
ap=0; stg=1; drt=n;
while (stg<= drt && ao==0)
{m=(stg+drt)/2;
if (E==x[m])
ap=1;
else
if (E>x[m])
{stg=m+1;
else
drt=m-1;
}
}
if (ap==1)
{cout<<”exista”;
else
cout<<”nu exista”;}
Matrici
Parcurgerea pe linii
Pentru (i=1;n;1)
Pentru (j=1;m;1)
prelucram a[i][j]
Parcurgerea pe coloane
Pentru (j=1;m;1)
Pentru(i=1;n;1)
prel. a[i][j]
Zonele delimitate de diagonala
principala
Pentru(i=1;n;1)
Pentru(j=1;n;1)
Daca(j==1)at
a[i][j]- D.P
Daca(j>i)
a[i][j]- deasupra D.P
Daca(j<i)
a[i][j]- sub D.P
Pentru(j=1;n;1)
Daca(j==1)at
a[i][j]- D.P
Daca(j>i)
a[i][j]- deasupra D.P
Daca(j<i)
a[i][j]- sub D.P
Zonele delimitate de diagonala
secundara
Pentru (i=1;n;1)
Pentru (j=1;n;1)
Daca (j==n+1-i)
a[i][j]- D.S
Daca (j<n+1-i)
a[i][j]- deasupra D.S
Daca (j>n+1-i)
a[i][j]- sub D.S
Pentru (j=1;n;1)
Daca (j==n+1-i)
a[i][j]- D.S
Daca (j<n+1-i)
a[i][j]- deasupra D.S
Daca (j>n+1-i)
a[i][j]- sub D.S
Niciun comentariu:
Trimiteți un comentariu