You are on page 1of 6

Laborator 6 Algoritmi fundamentali 1

Aplicații de laborator
1. Să se scrie un algoritm care face conversia unui număr din baza 10 într-o bază oarecare
b.
- numărul scris în bază b are cifre cu valori între 0 și b-1
- pentru a obține reprezentarea unui număr din bază 10 in bază b, trebuie sa realizăm un
șir de împărțiri repetate la b.
Ex: n = 2490 si b = 8; //n este numărul în bază 10
2490 impartit la 8 produce catul 311 si restul 2.
311 impartit la 8 produce catul 38 si restul 7
38 impartit la 8 produce catul 4 si restul 6
4 impartit la 8 produce catul 0 si restul 4
- atunci cand avem catul 0, pentru a obtine numărul in bază b, luăm resturile împărțitii
în ordine inversă și obținem nb = 4672
algoritm conversie (n, b, nb)
nb = 0; //numarul in baza b
p = 1; //variabila p ne trebuie pentru puterile lui 10
while (n != 0)
nb = nb + (n%b)*p;
p = p*10;
n = n/b
end while.
return nb;
end alg.
2. Reuniunea a două mulțimi. Să se scrie un algoritm care calculează reuniunea a două
mulțimi, cu n si m elemente, numere întregi.
C = A U B = A U (B-A)
Date de intrare:
Laborator 6 Algoritmi fundamentali 2

n = 5, a = {1, 2, 5, 7, 12} si m = 4, b = {2, 4, 8, 12}  C = {1, 2, 4, 5, 7, 8, 12}


Date de iesire:
se obtine: k=7, c={1, 2, 5, 7, 12, 4, 8}
algoritm reuniune(a[], b[], n, m, k, c[])
k =0;
for i = 1 to n
return a[i];
end for.
for i = 1 to m
return b[i];
end for.
for i = 1 to n
c[i] = a[i]; //copiem multimea a in multimea c
k = n;
end for.
for j = 1 to m
ok = 1 // ok = vrifică daca un element apartine sau nu mulțimii a
for i = 1 to n
if (b[j] == a[i]) //daca elementul din b apartine si multimii a, atunci nu-l adaugam in c
ok = 0;
end if;
end for; end for;
if (ok == 1)
k = k+1;
c[k] = b[j];
end if.
for i = 1 to k
return c[i];
end for.
Laborator 6 Algoritmi fundamentali 3

end alg.
3. Se dă un vector de n elemente numere intregi. Să se scrie un algoritm care introduce în
vector o valoare x, pe o pozitie oarecare si afiseaza vectorul rezultat.
Algoritm vector(n, v[100], pozitie, x)
for i = 1 to n
return v[i];
end for;
for i = n downto pozitie
v[i+1] = v[i];
end for;
v[pozitie] = x;
n=n+1;
for i = 1 to n
return v[i];
end for;
end alg.

4. Să se scrie un algoritm care calculează suma elementelor de pe diagonala secundară a


unei matrici cu n linii și n coloane.
int main(n, a[][], s) // i + j = n+1  j = n + 1 - i
s = 0;
for i= 1 to n
for j = 1 to n
return a[i][j];
for i = 1 to n
s=s+a[i][n-i+1];
end for.
return s;s;
end alg.
Laborator 6 Algoritmi fundamentali 4

5. Se dă o matrice cu n linii si n coloane. Să se scrie un algoritm care calculează


transpusa matricei date.
Obs. Transpusa unei matrici se construiește prin înlocuirea liniilor matricei inițiale cu
coloanele acesteia.
algoritm transpusa(n, m[][], t[][])
for i = 1 to n
for j = 1 to n
return m[i][j];
end for; end for;
for i = 1 to n
for j = 1 to n
t[i][j]=m[j][i];
return t[i][j];
end for; end for;

6. Se dă o matrice cu n linii și n coloane. Să se scrie un algoritm pentru eliminarea unei


linii oarecare x, din matricea dată.
algoritm elimlin (a[][],n,x)
for i = 1 to n
for j = 1 to n
return a[i][j]
end for; end for;
for i= x to n-1
for j = 1 to n
a[i][j]=a[i+1][j];
for i = 1 to n - 1
for j = 1 to n
return a[i][j]
end for; end for
end.
Laborator 6 Algoritmi fundamentali 5

7. Se dă o matrice pătratică mat de dimensiune n. Să se scrie un algoritm care


returnează șirul obținut prin parcurgerea șerpuită a matricei date.

Exemplu:

- trebuie să parcurgem fiecare diagonală paralelă sau egală cu diagonala


secundară (de jos în sus apoi invers)
algoritm serpuire(mat[][], n)
for i = 1 to n
for j = 1 to n
return mat[i][j];
p = 0;
x = 0;
for k = 1 to 2*n – 1 // n=3, k = 1 to 5
if (k > n)
p = p + 1;
if (k % 2 == 0)
for j = k – p downto p
s[x+1] = mat[j][k+1-j] ;
return s[x+1]
else
for j = p+1 to k-p
s[x+2] = mat[j][k+1-j];
return s[x+2];
end alg.
Laborator 6 Algoritmi fundamentali 6

123
456142357869
789

Tema laborator
1. Să se scrie un algoritm care face conversia unui număr dintr-o bază oarecare, în
baza 10.
2. Să se scrie un algoritm care calculează intersecția a două mulțimi de câte n,
respectiv m, elemente, numere intregi memorate cu ajutorul vectorilor.
3. Se dă un vector cu n numere naturale. Să se scrie un algoritm care elimină din
vector o valoare x, pe o pozitie oarecare și care afișează vectorul rezultat.
4. Să se scrie un algoritm care calculează produsul elementelor de pe diagonala
principală a unei matrice pătratice.
5. Se dă o matrice cu n linii și n coloane. Să se scrie un algoritm pentru eliminarea
unei coloane din matricea dată.
6. Să se scrie un algoritm care parcurge o matrice, cu n linii și m coloane si
returneza un sir în spirală.
Exemplu:

7. Se dă o matrice cu n linii si m coloane. Să se scrie un algoritm care calculează


suma elementelor impare de pe linia k a matricii, k <= n.
8. Să se scrie un algoritm care formează un sir ordonat crescător cu elementele de
pe conturul unei matrici, cu n linii si m coloane.

You might also like