sâmbătă, 8 septembrie 2018

Descompunere numar, rezolvare ecuatie





















Combinari n,k - programare dinamica

# include <conio.h>;
# include <iostream.h>;

# define MAX 50

int a,b;
int c[MAX][MAX];
int i,j;

int comb(int n,int k)
{
if(c[n][k]>=1) return c[n][k];
else
 {
  c[n][k]=comb(n-1,k)+comb(n-1,k-1);
  c[n][n-k]=c[n][k];
  return c[n][k];
 }
}

void main(void)
{
clrscr();

cout<<"Intr n,k :\n";
 cin>>a>>b;

for(i=0;i<a;i++)
 for(j=0;j<b;j++)
  c[i][j]=-1;

for(i=0;i<a;i++)
{
c[i][0]=1;
c[i][i]=1;
if(i>=1)
 {
 c[i][1]=i;
 c[i][i-1]=i;
 }
}

cout<<"\ncomb("<<a<<","<<b<<")= "<<comb(a,b);

getche();
}

Combinari n,k - recursiv

# include <conio.h>;
# include <iostream.h>;

int a,b;

int comb(int n,int k)
{
if(k==n) return 1;
else if(k<=1) return n;
else return (comb(n-1,k)+comb(n-1,k-1));
}

void main(void)
{
clrscr();

cout<<"Intr n,k :\n";
 cin>>a>>b;
cout<<"\ncomb("<<a<<","<<b<<")= "<<comb(a,b);

getche();
}

Sortare Selectie

# include <iostream.h>;
# include <conio.h>;

# define MAX 10

int n,i,j,k;
int sch;
typedef int sir[MAX];
sir s;

void main(void)
{
clrscr();
 cout<<"Intr nr de elemente: ";
  cin>>n;

 for(i=0;i<n;i++)
  cin>>s[i];

 for(k=0;k<n-1;k++)
 {
  sch=0;
  i=k;
  for(j=k+1;j<n;j++)
   if(s[j]<s[i])
    {
     i=j;
     sch=1;
    }
   if(sch)
   {
    s[i]=s[i]^s[k];
    s[k]=s[i]^s[k];
    s[i]=s[i]^s[k];
   }
 }

cout<<"\nSirul sortat este:\n";
for(i=0;i<n;i++)
 cout<<s[i]<<" ";

getche();
}

Fib - programare dinamica

//fib(75) = OK

# include <conio.h>;
# include <iostream.h>;

# define MAX 5000

int n;
long int f[MAX];
long int i;

long int fib(long int n)
{
if(f[n]!=-1) return f[n];
else
 {
  f[n]=fib(n-1)+fib(n-2);
  return f[n];
 }
}

void main(void)
{
clrscr();

for(i=0;i<MAX;i++)
  f[i]=-1;
f[0]=f[1]=1;

cout<<"Intr n :\n";
 cin>>n;
cout<<"\nfib("<<n<<")= "<<fib(n);

getche();
}

Interclasare Fisiere

# include <stdio.h>;
# include <conio.h>;

FILE *pf1, *pf2, *pf3;
int n1,n2,n3;

void main(void)
{
clrscr();

pf1=fopen("fis1.txt","r");
pf2=fopen("fis2.txt","r");
pf3=fopen("fis3.txt","w+");

fscanf(pf1,"%d",&n1);
fscanf(pf2,"%d",&n2);

int f=0;

while(!feof(pf1)&&(!feof(pf2)))
{
 if(f==1)
  fscanf(pf1,"%d",&n1);
 if(f==2)
  fscanf(pf2,"%d",&n2);
 if(n1<n2)
  {
   fprintf(pf3,"%d\n",n1);
   f=1;
  }
 else
  {
   fprintf(pf3,"%d\n",n2);
   f=2;
  }
}

FILE * aux;
int n=0;

if(feof(pf1) && (!feof(pf2)))
 {
  aux=pf2;
  while(n2<=n1)
  {
   fprintf(pf3,"%d\n",n2);
    fscanf(pf2,"%d",&n2);
  }
  fprintf(pf3,"%d\n",n2);

 }
else if((!feof(pf1)) && feof(pf2))
 {
  aux=pf1;

  while(n1<=n2)
  {
   fprintf(pf3,"%d\n",n1);
    fscanf(pf1,"%d",&n1);
  }
  fprintf(pf3,"%d\n",n1);

 }

while(!feof(aux))
 {
  fscanf(aux,"%d",&n);
  fprintf(pf3,"%d\n",n);
 }

fclose(pf1);
fclose(pf2);
fclose(pf3);

getche();
}

2 la N - vectori

# include<stdio.h>
# include<conio.h>

# define MAX 100

int i,k,j,n,r[MAX],fr[MAX];
int nrcif=1;

int main(void)
{
//clrscr();

printf("Intr n: ");
 scanf("%d",&n);

r[0]=1;
fr[0]=1;

for(k=0;k<n;k++)
 {
 r[0]=(2*r[0])%10;
 i=1;
 while(i<=nrcif)
  {
   r[i]=(2*r[i])%10+(2*fr[i-1])/10;
   i++;
  }
 if(2*r[nrcif-1]>=10) nrcif++;
 for(j=0;j<i;j++) fr[j]=r[j];
 }

printf("\n");

for(j=0;j<nrcif;j++)
 printf("%d ",r[j]);

getche();
return 0;
}