Sunteți pe pagina 1din 4

1.

O funcţie reprezintă o secvenţă de instrucţiuni care poate fi identificată şi apelată prin


intermediul unui nume.
Funcţiile sunt un element foarte important în orice limbaj de programare, deoarece uşurează
foarte mult munca programatorului, eliminând necesitatea scrierii aceluiaşi cod de mai multe ori. De
asemenea, prin folosirea funcţiilor programele pot fi structurate în blocuri, implicând o mai bună
depanare şi modularizare a programelor respective.
Definirea unei funcţii reprezintă precizarea tipului returnat de funcţia respectivă, a argumentelor
funcţiei şi a tipurilor acestora şi scrierea corpului funcţiei (instrucţiunile care vor fi executate când va
fi apelată funcţia).
Exemplu1:
int calcul (int a, int b)
{
int c;
c = a + b;
return c; // valoarea returnată de funcţie
}
Exemplu2:
void afisare (void) // sau void afisare ()
{
printf (“Functie care nu returnează nici o valoare...”;
}

2.
Fișierele binare stochează informația brut, fără prelucrări exact așa cum apare ea în memorie (puteți să va imaginați
că se face fotografia unei porțiuni din memoria RAM, și se scrie în fișier Byte cu Byte, astfel încât poate fi restaurată
mai târziu printr-o simplă copiere înapoi în RAM).
Fişierele binare pot conţine:
numere în reprezentare internă (binară)
articole (structuri de date)
fişiere cu imagini grafice, în diverse formate, etc

Funcţiile recomandate pentru lucrul cu fişiere binare sunt urmatoarele:


• pentru scriere: se foloseşte funcţia fwrite ();
• pentru citire: se foloseşte funcţia fread ();
Funcţiile fread () şi fwrite () sunt folosite pentru scrierea datelor în fişierele binare, fără a da nici
o interpretare conţinutului. Astfel, funcţiile fread () şi fwrite () sunt folosite pentru citirea şi scrierea de
blocuri de date structurate, fişierul rezultat fiind o copie a conţinutului blocului de memorie din care se
face scrierea în fişier (în cazul fwrite () ) sau o imagine a conţinutului fişierului (în cazul fread ()).
Prototipurile funcţiilor fread () şi fwrite () sunt următoarele:
size_t fread (void *ptr,size_t noct,size_t nr,FILE *f);
size_t fwrite (void *ptr,size_t noct,size_t nr,FILE *f);

3.
Backtracking = “to go back to an earlier point in a sequence”
Utilitate - rezolvarea problemelor cu următoarele proprietăţi:

Metoda backtracking se aplică algoritmilor pentru rezolvarea următoarelor tipuri de


probleme:
Fiind date n mulţimi S1, S2, ... Sn, fiecare având un număr nrsi de elemente, se cere găsirea
elementelor vectorului X =(x1, x2, ... xn) ϵ S=S1xS2x…Sn, astfel încât să fie îndeplinită o anumită
relaţie φ(x1, x2, … ,xn) între elementele sale.
Relaţia φ(x1, x2, … ,xn) se numeşte relaţie internă (condiție internă), mulţimea S=S1xS2x…Sn
se numeşte spaţiul soluţiilor posibile, iar vectorul X se numeşte soluţia rezultat.
Metoda backtracking determină toate soluţiile rezultat ale problemei. Dintre acestea se
poate alege una care îndeplineşte în plus o altă condiţie.
Această metodă se foloseşte în rezolvarea problemelor care îndeplinesc simultan
următoarele condiţii:
- mulţimile S1, S2, ... Sn sunt mulţimi finite, iar elementele lor se consideră că se află într-o
relaţie de ordine bine stabilită (de regulă sunt termenii unei progresii aritmetice);
- nu se dispune de o altă metodă de rezolvare, mai rapidă;
- x1, x2, …, xn pot fi la rândul lor vectori;
- S1, S2, ... Sn pot fi identice
Metoda Backtracking are ca rezultat obţinerea tuturor soluţiilor problemei. În
cazul în care se cere o sigură soluţie se poate forţa oprirea, atunci când a fost găsită.
orice soluţie se generează sub formă de vector.
Sub formă recursivă, algoritmul backtracking poate fi redat astfel:
#define nmax ...//numărul maxim de mulțimi
..../* se consideră declarate global vectorii care mulţimile Si şi numărul lor de elemente nrsi */
int x[nmax],n,k,nrs[nmax];
void citire(){………….}
void afisare(){………….}
int valid(int k){ return (φ(x[1], x[2], ..., x[k])==1);}
int soluție(int k){….}//de exemplu {return k==n+1}
void backtracking_recursiv(int k)
{if(soluție(k)) afisare(x,n); /* afişarea sau eventual prelucrarea soluţiei rezultat */
else { int i;
for (i=1;i<=nrs[k];i++)
{x[k]=Sk[i]; /* al i-lea element din mullţimea Sk */
if (valid(k))backtracking_recursiv(k+1);
}
}
}
int main(){ citire(); backtracking_recursiv(1); return 0;}

4.
#include<stdio.h>
#include<stdlib.h>
int main{
for (int i = 0; i < n; i+=2)
printf("Numerele pare din vector sunt:");
printf("v[%d]", n)

5.

#include<stdio.h>
#include<conio.h>
typedef struct //declarare structura
{
char denumire[20];
char model[20];
char cul[20];
int cantitate;
struct //definire structura
{
char nl;
int put;
}date; //lista variabile la structura
}magazie; //nume structura
typedef magazie materiale[20]; //tip de date propriu
void citire(materiale a, int *n) //introducere date
{
int i;
printf("Dati nr. de materiale: ");
scanf("%d",n);
for(i=0; i<*n; i++)
{
printf("Introduceti informatiile despre materialele din magazin %d\n",i+1);
printf("\tdenumire: ");
scanf("%s",a[i].denumire);
printf("\tmodelul: ");
scanf("%s",a[i].model);
printf("\tculoarea: ");
scanf("%s",a[i].cul);
printf("\tcantitate: ");
scanf("%d",&a[i].cantitate);

}
}

void afisare(material a,int n) //afisare date


{
int i;
for (i=0;i<n;i++)
{
printf("Material [%d]:\n",i+1);
printf("\tdenumire: %s\n",a[i].denumire);
printf("\tmodelul: %s\n",a[i].model);
printf("\tculoarea: %s\n",a[i].cul);
printf("\tcantitate: %d\n",a[i].cantitate);
}
}
void an(material a,int n,int p)
{
int i;
for(i=0;i<n-1;i++)
{
if(a[i].an=p) //atribuire valori membrilor structurii
{
printf("Material [%d]:\n",i+1);
printf("\tdenumire: %s\n",a[i].denumire);
printf("\tmodelul: %s\n",a[i].model);
printf("\tculoarea: %s\n",a[i].cul);
printf("\tcantitate.: %d\n",a[i].cantitate);

}
}
}
void main()
{
materiale a;
int n,aux,i,j,p;
citire(a,&n);
afisare(a,n);
for(i=0;i<n;i++)
{
if(a[i].date.nl=5) //atribuire valori membrilor structurii
{
printf("Material [%d]:\n",i+1);
printf("\tdenumire: %s\n",a[i].denumire);
printf("\tmodelul: %s\n",a[i].model);
printf("\tculoarea: %s\n",a[i].cul);
printf("\tcantitate.: %d\n",a[i].cantitate);
}
}
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
{
if(a[i].date.put>a[j].date.put)
{
aux=i;
i=j;
j=aux;
}
}
afisare(a,n);
printf("\n\tDati cantiatea minima pentru afisarea materialelor: ");
scanf("%d",&p);
an(a,n,p);

getchar();
int k;
scanf("%d", &k);

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