Sunteți pe pagina 1din 11

Universitatea Tehnică a Moldovei

Catedra Automatică și Tehnologii Informaționale

Disciplina : Structuri de date şi algoritmi 

Raport

Tema: “Analiza algoritmilor ale TEHNICII PROGRAMĂRII”

A realizat student grupa TI-173 Rosca Florin

A verificat Moțpan Serghei

Chisinău 2018
Cuprin
s

1. Scopul și obiectivele lucrării....................................................................................................3


2. Sarcina......................................................................................................................................4
3. Schema bloc.............................................................................................................................5
4. Realizarea.................................................................................................................................7
Concluzii..........................................................................................................................................8
Bibliografie......................................................................................................................................9
Anexa A.........................................................................................................................................10
Anexa B.........................................................................................................................................11
Anexa E.........................................................................................................................................12

2
1. Scopul și obiectivele lucrării:

2. 1. De studiat şi însuşit materialul teoretic pentru evidenţierea esenţialului tehnicilor de


programare în elaborarea modelelor soluţiei problemelor: esenţa metodelor (strategiilor
tehnicilor de programare) şi specificul realizării;
3. să se analizeze şi să se descrie tehnica modelării şi scenariile programării eficiente pentru
diverse compartimente ale diferitor situaţii cu argumentări şi modele de structuri
abstracte;
4. 2. să se preia varianta problemei din compartimentul “3.Problemele cu exemple pentru
însuşire, modificare şi rulare” , pentru analiză, aprofundare şi rularea programelor în limbajul
C
5. să se elaboreze scenariile succinte de modificare, incluzând pointeri, subprograme şi
fişiere cu teste de verificare şi vizualizări şi explicaţii la principalele subprograme prin
schemele logice.
6. În raport de descris concis esenţa fiecărei metode ( ca strategie sau tehnică de programare).

3
7. Sarcina

Sarcina lucrarii de laborator numarul 6 este ca noi sa cercetaum un program ce foloseste metoda
backtracking pentru a rezolva o anumita cerita ,iar noi trebue sa cunoastem teoria
oferita de profesor pentru a putea expica mersul lucrarii.

Cerinta:
Problema 13. Problema “matricilor”. Sa se genereze toate matricile nxn
ce contin elemente distincte din multimea 1,...,n2 astfel încât pe fiecare
linie elementele sa fie în ordine crescatoare.

4
8. Schema bloc

5
a)Programul main();

b)Funtia back();

6
b)Funtia

7
9. Realizarea
Solutia folosita se bazeaza pe metoda backtracking si este realizata
recursiv. Elementele se introduc în matrice crescator pe linii, iar în cadrul
liniei, crescator dupa coloana, cu ajutorul procedurii recursive BACK(i,j).
Functia POSIBIL(i,j) verifica daca elementul din matrice de pe pozitia i,j
corespunde conditiilor impuse de problema.

8
Concluzii
Backtracking este numele unui algoritm general de descoperire a tuturor soluțiilor unei
probleme de calcul, algoritm ce se bazează pe construirea incrementală de soluții-candidat,
abandonând fiecare candidat parțial imediat ce devine clar că acesta nu are șanse să devină o
soluție validă.Deci in concluzie pot afirma ca

Bibliografie
9
1. The GNU C Reference Manual. [Interactiv] https://www.gnu.org/software/gnu-c-
manual/gnu-c-manual.html.
2. The C Library Reference Guide. [Interactiv] https://www-
s.acm.illinois.edu/webmonkeys/book/c_guide/.

[ CITATION The1 \l 1033 ]

Anexa A :Figura 1
#include <stdio.h>
#include <conio.h>
//Sa se genereze toate matricile nxn ce contin elemente distincte din multimea 1,...,n2
astfel incat pe fiecare linie elementele sa fie in ordine crescatoare.
int n,a[20][20],Nr=1;
//Funtia verifica daca noua matrice corespunde conditiei necesare
int posibil(int i,int j)
{ int l,k;
for(k=1;k<=i-1;k++)
for(l=1;l<=n;l++)
if (a[i][j]==a[k][l])
return 0;
if ((j) && (a[i][j]<=a[i][j-1]))
return 0;
return 1;
}
//Funtia afiseaza matricele generate pe ecran
void tiparire(void)
{ printf("\n");
printf("Matricea Nr.%d",Nr++);
int i , j;
for( i=1;i<=n;i++) {
printf("\n ");
for( j=1;j<=n;j++)
printf(" %d",a[i][j]);}
printf("\nTastati o tasta!\n");
getch();
}
//Funtia folosind metoda backtracking,creaza noile matrice si apoi cu ajutorul functiilor
anterioare verifica daca ea corespunde conditie si daca da o afiseaza pe ecran
void back(int i,int j)
{ int k;
for(k=1;k<=n*n;k++) {
a[i][j]=k;
if (posibil(i,j))
if ((i==n) && (j==n))
tiparire();
else
if (j==n)
back(i+1,1);

10
else
back(i,j+1);}
}
//Funtia principala ce lucreza cu funtiile anterioare
void main(void)
{ n=2;
clrscr();
back(1,1);
getch();
}

Anexa B
Rezultatul Afisarii programului pe ecran:

11

S-ar putea să vă placă și