Imi puteti da exemple de algoritmi de baza, precum cei invatati in clasa a 9 a?
Răspunsuri la întrebare
Răspuns:
1. Interschimbarea a 2 numere
Fie a si b
aux=a;
a=b;
b=aux;
2. Numarul maxim
Fie n nr de numere
max=0
for(i=1;i<=n;i++)
{
cin>>a;
if(a>max)
{
max=a;
}
}
3. Numarul minim
Fie n nr de numere
min=99999
for(i=1;i<=n;i++)
{
cin>>a;
if(a<max)
{
min=a;
}
}
4. 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
}
5. Prelucrarea cifrelor
Fie x;
while(x!=0)
{
cifra=x%10;
*prelucrare cifra;
x/=10;
}
6. Cifra maxima
Fie x;
cmax=0;
while(x!=0)
{
if(x%10>cmax)
{
cmax=x/10;
}
x/=10;
}
7. Cifra minima
Fie x;
min=10;
while(x!=0)
{
if(x%10<min)
{
min=x%10;
}
x/=10;
}
8. Numarul de cifre
Fie x;
cate=0;
while(x!=0)
{
cate++;
x/=10;
}
9. Suma cifrelor unui numar
Fie x;
s=0;
while(x!=0)
{
s+=x%10;
x/=10;
}
10. Oglinditul unui numar
Fie x;
og=0;
while(x!=0)
{
og=og*10+x%10;
x/=10;
}
11. Prima cifra
Fie x;
while(x>9)
{
x/=10;
}
12. Prelucrarea divizorilor unui numar
Fie x
for(i=2;i<=x/2;i++)
{
if(x%i==0)
{
*prelucrare divizor;
}
}
13. 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;
}
14. Descompunerea in factori primi
Fie x;
d=2;
while(x>1)
{
p=0;
while(x%d==0)
{
p++;
}
if(p!=0)
{
*prel
}
d++;
}
15. Cel mai mare divizor comun a 2 nr
Fie a si b;
while(b!=0)
{
r=a%b;
a=b;
b=r;
}
cmmdc=a;
16. Cel mai mic multiplu comun
cmmmc=(a*b)/cmmdc;
17. 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;
}
18. 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;
}
}
19. Vectori
{
Citire
Fie n nr elemente
for(i=1;i<=n;i++)
{
cin>>x[i];
}
Scriere
Fie n nr elemente
for(i=1;i<=n;i++)
{
cout<<x[i];
}
20. Elementul minim
Fie n nr elemente
min=x[1];
for(i=2;i<=n;i++)
{
if(x[i]<min)
{
min=x[i];
}
}
21. Elementul maxim
Fie n nr elemente
max=x[1];
for(i=2;i<=n;i++)
{
if(x[i]>max)
{
max=x[i];
}
}
22. 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;
}
}
}
23. 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);
24. Adaugare element pe pozitia p;
n++;
for(i=n;i>p;i–)
{
x[i]=x[i-1];
}
x[p]=E;
25. Stergerea elementului de pe poz p;
for(i=p;i<=n;i++)
{
x[i]=x[i+1];
}
n–;
}
26. 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”;
}
27. 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”;}
28. 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]
29. 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
30. 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
Sper ca te-am ajutat XD.