0% found this document useful (0 votes)
56 views14 pages

Frecventa Aparitie Numar in Vector

The document discusses several algorithms related to sorting and searching data structures. It includes code snippets for: 1. Inserting elements into a binary search tree and traversing it to count the frequency of elements. 2. Implementing bubble sort to sort an array. 3. Implementing distribution sort to sort an array based on the last digits of elements.

Uploaded by

fratell2008
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
56 views14 pages

Frecventa Aparitie Numar in Vector

The document discusses several algorithms related to sorting and searching data structures. It includes code snippets for: 1. Inserting elements into a binary search tree and traversing it to count the frequency of elements. 2. Implementing bubble sort to sort an array. 3. Implementing distribution sort to sort an array based on the last digits of elements.

Uploaded by

fratell2008
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 14

Frecventa aparitie numar in vector

#include<iostream>
using namespace std;
struct TNod{
int nr;
int frecventa;
TNod *st, *dr;
};
void Inserare(TNod *&rad, int nr)
{
if(rad){
if(rad->nr==nr) rad->frecventa++;
else if(rad->nr>nr) Inserare(rad->st,nr);
else Inserare(rad->dr, nr);
}
else{
rad=new TNod;
rad->nr=nr;
rad->frecventa=1;
rad->st=rad->dr=NULL;
}
}
int Cautare(TNod* rad, int nr)
{
if(rad){
if(rad->nr==nr) return rad->frecventa;
else if(rad->nr>0) Inserare (rad->st,nr);
else Inserare(rad->dr,nr);
}
else cout<<"Numar inexistent!";
}
void ParcurgereSRD(TNod* rad)
{
if(rad){ParcurgereSRD(rad->st);
cout<<"("<<rad->nr<<","<<rad->frecventa<<")"<<endl;
ParcurgereSRD(rad->dr);}
}
TNod*rad=NULL;
int main(){
int v[50];
int i, n;
cout<<"Dimensiunea vectorului:"; cin>>n;
for(i=0;i<n;i++){
cout<<v"["<<i<<"]="; cin>>v[i];}
for(i=0;i<n;i++) Inserare(rad,v[i]);
ParcurgereSRD(rad);
}
**************************

Permutari
#include<iostream>
#include<conio.h>
using namespace std;
void BubbleSort(int *v, int n){
int b=1;
for(int k=0; (k<n-1)&&b; k++)
{
b=0;
for(int i=0; i<n-k-1; i++)
if(v[i]>v[i+1])
{
int aux=v[i];
v[i]=v[i+1];
v[i+1]=aux;
b=1;
}
}
}
int main()
{
int v[50];
int i,n;
cout<<"Nr de elemente: "; cin>>n;
for(i=0;i<n;i++)
{
cout<<"v["<<i<<"]="; cin>>v[i];
}
BubbleSort(v,n);
for(i=0;i<n;i++)
{
cout<<v[i]<<" ";
}
getch();
}
#include<iostream>
#include<conio.h>
using namespace std;
struct TNod{
int cheie;
TNod* urm;
};

********
********
********
**
Sortare
topologi
ca

//TNod **succ;
TNod* succ[20];
//int* pred;
int pred[20];
void inserare(TNod* &cap,int nr){
TNod* nou=new TNod;
nou->cheie=nr;
nou->urm=cap;
cap=nou;
}
void prelucreaza(int i){
TNod* _cap=succ[i];
pred[i]=-1;
while(_cap){
pred[_cap->cheie]--;
_cap=_cap->urm;
}
}
int main()
{
int N,n;
int p,s;
int i;
cout<<"nr elemente = ";cin>>N;
cout<<"nr perechi = ";cin>>n;
for(i=0;i<N;i++)
{
pred[i]=0;succ[i]=NULL;
}
for(i=1;i<n+1;i++){
cout<<"introdu perechi p<s : ";cin>>p;cout<<"<";cin>>s;cout<<endl;
pred[s]++;
inserare(succ[p],s);
}
cout<<endl<<"ordonare topologica ";
int servite=0;bool no_sol;
do{
no_sol=true;
for(i=1;i<N+1;i++){
if(pred[i]==0){
servite++;no_sol=false;
cout<<i<<" ";
prelucreaza(i);
//cin.get();
if(no_sol){cout<<"no solution";break;}
}

}
}while(servite<N);
getch();
cin.get();return 0;
}
**********************
Sortare prin distribuire
#include<iostream>
#include<conio.h>
#include<cmath>
using namespace std;
struct TNod{
int cheie;
TNod *urm;
};
void Push(TNod*&cap, TNod*&sfarsit, int nr){
TNod*nou=new TNod;
nou->cheie=nr;
nou->urm=0;
if(!cap)
cap=sfarsit=nou;
else {
sfarsit ->urm=nou;
sfarsit=nou;
}
}
TNod*cap[10], *sfarsit[10];
void DistrSort(int*A, int n){
for(int k=0;k<3;k++)
{
int i;
for(i=0;i<10;i++)
cap[i]=NULL;
for(i=0;i<n;i++){
int l=(A[i]/(int)pow(10.,k))%10;
Push(cap[l],sfarsit[l],A[i]);
}
int p=0;
for(i=0;i<10;i++)
while(cap[i]){
A[p++]=cap[i]->cheie;
cap[i]=cap[i]->urm;
}
cout<<endl<<"Ordonare alfanumerica dupa ultimele "<<k<<"cifre: ";
for(i=0;i<n;i++)
cout<<A[i]<<" ";
}

}
in
t
m
ai
n(
){

int A[]={172,537,610,723,788,386,281,614,814,623,908,265,876,764},
n=sizeof(A)/sizeof(*A);
DistrSort(A,n);
cin.get();
return 0;
}
*************

Pb steaguri
#include<iostream>
#include<conio.h>
#define N 3
#define C 6
using namespace std;
int x[N];
char culori[6][10]={"alb", "galben", "roz", "rosu", "verde", "albastru"};
int continuare(int k)
{
if(k==0)
return 1;
if(k==1 && x[k]>1)
return 0;
if(x[k]==x[k-1])
return 0;
return 1;
}
void backtracking(int k)
{
if(k==N)
{
cout<<endl;
cout<<"Solutia ";
for(int i=0;i<N;i++)
cout<<culori[x[i]]<<',';
}
if(continuare(k))
else
backtracking(k+1);
for(int
}
i=0;i<C;i++){
}
x[k]=i;
int main()
{
backtracking(0);

getch();
}
************
Pb reginelor
#include<iostream>
#include<conio.h>
#define N 8
using namespace std;
int x[N];
int continuare(int k)
{
for (int i=0; i<k; i++)
if((x[k]==x[i])||(k-i==abs(x[k]-x[i])))
return 0;
return 1;
}
void backtracking(int k)
{
if(k==N)
{
cout<<endl;
for(int i=0;i<N;i++){
cout<<endl;
for(int j=0;j<N;j++)
cout<<(x[i]==j?'x':'-'); }
}
else
for(int i=0;i<N;i++){
x[k]=i;
if(continuare(k))
backtracking(k+1);
}
}
int main()
{
backtracking(0);
******************** pb hartilor
#include<iostream>
#include<conio.h>
#define R 3
using namespace std;
int x[10];
int N;

getch();
}

char culori[10][10]={"galben", "roz", "rosu"};


int v[10][10];
int continuare(int k)
{
for(int i=0; i<k;i++)
if((x[k]==x[i])&&(v[i][k]==1))
return 0;
return 1;
}
void backtracking(int k)
{
if(k==N)
{
cout<<endl;
cout<<"Solutia ";
for(int i=0;i<N;i++)
cout<<culori[x[i]]<<',';
}
else
for(int i=0;i<R;i++){
x[k]=i;
}
if(continuare(k))
}
backtracking(k+1);
int main()
{
cout<<"N= "; cin>>N;
for(int i=0;i<N;i++)
for(int j=i+1;j<N;j++)
{cout<<"Tara "<<i<<" este vecina cu "<<j<<": ";
//cout<<v[i][j];
cin>>v[i][j];
v[j][i]=v[i][j];
}
backtracking(0);
getch();
}
************
Turnurile din hanoy
#include<iostream>
#include<conio.h>
using namespace std;

int a=0;
void Hanoy(int n, char A, char B, char C){
if(n){
Hanoy(n-1,A,C,B);
//cout<<endl<<a++;
cout<<endl<<"Mutarea: "<<a++<<endl;
cout<<A<<" -> "<<C<<endl;
cout<<endl<<endl<<"Nr de mutari= "<<a;
Hanoy(n-1,B,A,C);
}}
int main(){
int n;
cout<<"n=";
cin>>n;
Hanoy(n,'A','B','C');
getch();
}
*************
Pb taieturilor
#include<iostream>
#include<conio.h>
using namespace std;
int l,h,i,n,xf,yf,lf,hf,xv[10],yv[10];
void dimp(int x,int y,int l, int h, int&xf,int &yf, int&lf,int&hf, int xv[10], int yv[10])
{
int gasit=0,i=1;
while(i<=n&&!gasit)
if(xv[i]>x&&xv[i]<1&&yv[i]>y&&yv[i]<y+h)
gasit=1;
else i++;
if(gasit)
{
dimp(x,y,xv[i]-x,h,xf,yf,lf,hf,xv,yv);
dimp(xv[i],y,l+x-xv[i],h,xf,yf,lf,hf,xv,yv);
dimp(x,y,l,yv[i]-y,xf,yf,lf,hf,xv,yv);
dimp(x,yv[i],l,h+y-yv[i],xf,yf,lf,hf,xv,yv);
}
else if(l*h>lf*hf)
{
xf=x;
yf=y;
lf=l;
hf=h;
}
}
int main()
{
cout<<"n="; cin>>n;
for(int i=1;i<=n;i++)
{

cout<<"x["<<i<<"]=";
cin>>xv[i];
}
cout<<"y["<<i<<"]=";
cout<<"l="; cin>>l;
cin>>yv[i];
cout<<"h="; cin>>h;
dimp(0,0,l,h,xf,yf,lf,hf,xv,yv);
cout<<"x="<<xf<<" y= "<<yf<<" l= "<<lf<<" h= "<<hf;
getch();
}
***********************
Pb procesoarelor
#include<iostream>
#include<conio.h>
using namespace std;
int a=1;
int main(){
//int i;
int n; // nr de procesoare
int m; // aplicatii
int L[10]; //timpi lucrare
int T[10]; // timpi ocupare
int P[10]; //programarea lucrarilor
cout<<"numarul de procesoare= "; cin>>n;
cout<<"numarul de aplicatii = ";cin>>m;
for(int i=0;i<m;i++){
cout<<"L["<<i<<"]="; cin>>L[i];
}
for(int i=0;i<n;i++)
T[i]=0;
for(int i=0;i<m;i++)
{//caut procesorul cel mai putin ocupat (min)
int min=0;
for(int j=1;j<n;j++)
if(T[j]<T[min])
min=j;
//aloc lucrarea i pe procesorul min
P[i]=min;
T[min]+=L[i];
}
//afisare T
for(int i=0;i<n;i++)
{cout<<"Procesorul: "<<a++<<" are "<<T[i]<<" timpi "<<endl;
for(int j=0;j<m;j++)
if(P[j]==i)
cout<<" "<<L[j]<<endl;}
getch();

}
**************
Distanta intre 2 orase
#include<iostream>
#include<conio.h>
#include<fstream>
using namespace std;
int main(){
int n,i,j;
int a[10][10];
int start=0;
int stop=2;
int min;
ifstream in ("fis.txt");
cout<<"numarul de orase= "; in>>n;
for(i=0;i<n;i++){
a[i][i]=9999999;
for(j=i+1;j<n;j++)
{cout<<"a["<<i<<"]["<<j<<"]=";
in>>a[i][j];
a[j][i]=a[i][j];
}
}
while (start!=stop){ //nu sunt in orasul tinta
min=start;
for(j=0;j<n;j++) //caut cel mai apropiat oras care devine start
if(a[start][j]<a[start][min])
min=j;
cout<<min<<" "<<a[start][min];
a[start][min]=a[min][start]=99999;
start=min;
#include<iostream>
#include<conio.h>
#include<fstream>
using namespace std;
struct Obiect{

}
in.close();
getch();
}

**********
*
Pb
rucsacului

int g;
int v;
double r;
} ob[20];
void BubbleSort(Obiect v[], int n){
double b=1;
for(int k=0; (k<n-1)&&b; k++)
{
for(int i=0; i<n-k-1; i++)
b=0;
if(v[i].r>v[i+1].r)
{
double aux=v[i].r;
v[i].r=v[i+1].r;
v[i+1].r=aux;
b=1;
}
}
}
int main()
for(i=0;i<n;i++)
{
in>>ob[i].g>>ob[i].v;
ob[i].r=(double)ob[i].g/ob[i].v;
//cout<<ob[i].g<<ob[i].v<<ob[i].r<<endl;
}
BubbleSort(ob, n);

{
int i;
int n;
ifstream in
("fis.txt");
in>>n;

for(i=0;i<n;i++)
{
cout<<i+1<<". "<<ob[i].r<<" "<<endl;
}
getch();
}
************

Programarea spectacolelor

#include<iostream>
#include <conio.h>
#include<fstream>
using namespace std;
class CSpectacol{
public:
int s,f;
friend ifstream & operator >>(ifstream &in, CSpectacol &sp)
{
in>>sp.s>>sp.f;
return in;
}
friend ostream & operator <<(ostream &of, CSpectacol &sf)
{
of<<"Spectacolul incepe la: "<<sf.s<<" si se termina la "<<sf.f<<endl;
return of;
}
}
spectacole[30];
int n;
void main(){
int i;
int p=0;//primu spectacol care se desfasoara, el e tot timpu in derulare
cout<<spectacole[p];
ifstream in("date.txt");
in>>n;
for(i=0; i<n;i++)
in>>spectacole[i];
//in>>spectacole[i].s>>spectacole[i].f;
for(i=1;i<n;i++)
if(spectacole[p].f<=spectacole[i].s){
p=i;
cout<<spectacole[p];
}
getch();
}

date.txt

5
12 13
12 16
15 18
10 18
18 20

You might also like