Cuprins Limbajul C

Gandirea algoritmica
Structura unui program si a unei functii in C
Constructiile de bază ale limbajului C – Notiuni generale
Constructiile de baza ale limbajului C – Tipuri de date
Constructiile de baza ale limbajului C – Operatori
Structuri de date – Lista liniara simplu inlantuita
Structuri de date – Stiva (LIFO – Last In First Out)
Structuri de date – Coada (FIFO – First In First Out)
Instructiuni ale limbajului C
Pointeri – Operatori specifici, tablouri, functii
Pointeri – Tipuri structurate de date
Functii de biblioteca
Operatii cu fisiere
Calcul Matriceal – Produsul a doua matrici
Calcul Matriceal – Inversarea unei matrici
Calcul Matricial – Metoda lui Gauss
Metode de sortare – sortare ordinara
Metode de sortare – prin selectie (Selection sort)
Metode de sortare – insertie directa (Direct Insertion Sort)
Metode de sortare – insertie binara (Binary Insertion Sort)
Metode de sortare – insertie directa folosind o santinela
Metode de sortare – metoda bulelor (Bubble Sort)
Metode de sortare – sortare rapida (Quick Sort)
Metode de sortare – prin interclasare (Merge Sort)
Recursivitate (numar factorial, algoritmul lui Euclid recursiv, sirul lui Fibonacci)
Backtracking – permutarile
Backtracking – aranjamente
Backtracking – combinari
Backtracking – problema reginelor
Backtracking – problema labirintului
Backtracking – problema calului
Backtracking – problema mingii
Metoda Divide et Impera – Suma elementelor unui sir
Metoda Divide et Impera – Problema Turnurilor din Hanoi
Metoda Divide et Impera – Elementul maxim intr-un sir
Metoda Divide et Impera – Problema cautarii binare
Grafuri neorientate – parcurgerea in latime
Grafuri neorientate – parcurgerea in adancime
Grafuri neorientate – Drumuri intr-un graf
Grafuri neorientate – ponderate
Grafuri neorientate – hamiltonian
Grafuri neorientate – euleriene
Grafuri neorientate – implementarea unui graf utilizand matricea de adiacenta
Grafuri neorientate – implementarea unui graf utilizand pointeri
Grafuri neorientate – drumul optim intr-un graf

Backtracking – permutarile

Soluţia se va genera sub forma unui vector. Abordarea este asemănătoare cu cea a construirii unui mecanism de tip stivă. Astfel, primul element X[1] se va găsi pe primul nivel al stivei, X[2] pe nivelul 2 iar elementul X[k] se va găsi pe nivelul al stivei. În cadrul generării permutărilor, vom ţine cont de faptul că orice permutare va fi alcătuită din elemente distincte ale mulţimii valorilor de la 1 la n.


#include "stdio.h"
#include "conio.h"
int stiva[20],n,k;
//funcţia care tipăreşte soluţia
void tipareste()
{
  int i;
  for(i=1;i < = n;i++)     printf("%d ", stiva[i]);   putchar("\n"); } Continue reading

Calcul Matriceal – Inversarea unei matrici

Inversa unei matricipătratice A, notată A la -1 este matricea care îndeplineşte condiţia: $latex A\cdot A^{-1}= A^{-1}\cdot A=I $ (unde I este matrice unitate).
O matrice este inversabilă dacă şi numai dacă determinantul asociat ei este nenul. O astfel de matrice se numeşte nesingulară.


#include "stdio.h"
#include "conio.h"
int n;
float a[10][20];

//realizează extinderea matricii la dreapta
void extindere_matr(void)
{
  int i,j;
  //cu o matrice pătratică
  for(i=1;i < = n;i++)     for(j=n+1;j <= 2*n;j++)       if(i+n==j) a[i][j]=1;       //dacă ne găsim pe diagonala principală a extinsei       else a[i][j]=0; } //în cazul în care elementul a[i][i] este o caută int cauta_pivot(int i) {   int j;   //un element pivot pe unul din rândurile de dedesuptul liniei i   for(j=i+1 ;j <= n;j++)     if(!a[j][i]) return(j);   return(0); } Continue reading

Calcul Matriceal – Produsul a doua matrici

Două matrici A(m,n) şi B(l,p) se pot înmulţi dacă numărul de coloane al primei matrici este egal cu numărul de linii al celei de a doua, deci dacă n=l.
#include "stdio.h"
#include "conio.h"
void main(void)
{
  float a[20][20],b[20][20],c[20][20],v;
  int m,n,p,i,j,k;
  printf("Introdu nr de linii prima matrice:");
  scanf("%d",&m);
  printf("Introdu nr de coloane prima matrice:");
  scanf("%d",&n);
  printf("Introdu nr de coloane a celei de a doua matrice:");
  scanf("%d",&p);
  printf(”Introdu elem primei matrice:\n”);
  for(i=0;i < m;i++)     for(j=0;j < n; j++)     {       printf("a[%d][%d]=",i,j); Continue reading