Orar semigroup #2

Orar semigroup #2

Archive for martie 2011

28 martie - recursiva 15 + Temă 22,23,24

Problema 15

#include<iostream>
using namespace std;
int a,b,n;
double A(int);
double B(int);
   
int main()
{int i;
cout<<"a=";cin>>a;
cout<<"b=";cin>>b;
cout<<"n=";cin>>n;
for(i=1;i<=n;i++)
{cout<<A(i)<<" "<<B(i);
cout<<endl;}
}

double A(int n)
{if(n==0)
    return a;
else return (A(n-1)+B(n-1))/2;
}

double B(int n)
{if(n==0)
    return b;
else return sqrt(A(n-1)*B(n-1));
}
22, 23, 24
#include<iostream>
using namespace std;
int p=0;
int s=0;

void afisare(int n, int i)
{
    if(n%i==0)
        cout<<i<<" ";
    if(i<=n)
        afisare(n,++i);
}

int numarare(int n, int i)
{
    if(n%i==0)
        p++;
    if(i<=n)
        numarare(n,++i);
return p;
}

int suma(int n, int i)
{
    if(n%i==0)
        s=s+i;
    if(i<=n)
        suma(n,++i);
return s;
}

int main()
{int n,i=1;
cin>>n;
afisare(n,i);
cout<<endl<<"NR DIVIZORI "<<numarare(n,i)<<endl;
cout<<"SUMA DIVIZORILOR "<<suma(n,i);
}

miercuri, 30 martie 2011 by DlMuresan
Categories: , , , , | Leave a comment

Triunghiul lui Pascal

#include<iostream>
using namespace std;

int vectori(int n, int k)
{int v[100], u[100], i, j, t;
v[0]=1;
for(i=0;i<n;i++)
    if(i==0)
        u[i]=0;
    else u[i]=v[i]+v[i-1];
}

int main()
{int k,t,i=0,j=0,n,a[100][100]={0},nn,kk;
cin>>n;
for(i=0;i<n;i++)
    for(j=0;j<=i;j++)
        if(j==0)
            a[i][j]=1;
        else a[i][j]=a[i-1][j]+a[i-1][j-1];

for(k=0;k<n;k++)
    {for(t=0;t<k+1;t++)
        cout<<a[k][t]<<" ";
    cout<<endl;}
    cout<<"citire"<<endl;
    cin>>nn>>kk;
    cout<<"Combinari de "<<nn<<" luate cate "<<kk<<"="<<a[nn][kk];
}

marți, 29 martie 2011 by DlMuresan
Categories: , , | Leave a comment

Fişă Funcţii Recursive - 21 martie 2011 (1-10, 14)

#include<iostream>
using namespace std;
void afisaren1(int n)
{
cout<<n<<" ";
n--;
if(n!=0)
    afisaren1(n--);
}

void afisare1n(int i, int n)
{
if(i<=n){
    cout<<i<<" ";
afisare1n(i+1,n);}
}

int factorial(int n)
{
    if(n==0)
        return 1;
    else return n*factorial(n-1);
}

int suma(int n)
{
    if(n==0)
        return 0;
    else return n+suma(n-1);
}

int produs(int a, int b)
{int i=1;
    if(b==0)
        return 0;
    else return a+produs(a,b-1);
}

int putere(int a, int b)
{   int i=0,bb;
bb=b;
if(b==0)
    return 1;
if(i<=bb)
{bb--;
return a*putere(a,bb);
}
}

void impartire(int a, int b, int &rest, int &c)
{
    if(a-b>0)
        {c++;
    impartire(a-b,b,rest,c);}

rest=a-(c*b);
if(rest==b)
    {rest=0;c++;}
}

void descompunere(int n, int i, int j)
{
cout<<i<<"+"<<j<<endl;
if(i<n-1)
    descompunere(n,i+1,j-1);
}

int combinari(int n, int k)
{
if(k==0)
    return 1;
else return (n*combinari(n-1,k-1))/k;
}

int combinari2(int n, int k)
{if(k==0 || k==n)
    return 1;
else return combinari2(n-1,k)+combinari2(n-1,k-1);
}

void cifre(int n)
{if(n!=0)
    cout<<n%10<<endl;
if(n!=0)
    cifre(n/10);
}

int sumacifre(int n)
{if(n==0)
    return 0;
else return n%10+suma(n/10);
}

int baza(int n, int b)
{
if(n==0)
    return 0;
else return (n%b)+baza(n/b,b)*10;
}

int main()
{int n,a,b,rest,c=0,i=1,j,beta=1,k,bb;
cout<<"baza";
cin>>bb;
cout<<"n=";
cin>>n;
j=n-1;
cout<<"k=";
cin>>k;
cout<<"a=";
cin>>a;
cout<<"b=";
cin>>b;
cout<<"Afisare de la 1 la "<<n<<endl;
afisare1n(i,n);
cout<<endl;
cout<<"Afisare de la "<<n<<" la 1"<<endl;
afisaren1(n);
cout<<endl;
cout<<"Afisare "<<n<<" factorial"<<endl;
cout<<factorial(n)<<endl;
cout<<"Suma primelor "<<n<<" numere naturale"<<endl;
cout<<suma(n)<<endl;
cout<<"Produs("<<a<<","<<b<<")"<<endl;
cout<<produs(a,b)<<endl;
cout<<"Putere "<<a<<" la "<<b<<endl;
cout<<putere(a,b)<<endl;
cout<<"Impartire "<<a<<" la "<<b<<endl;
impartire(a,b,rest,c);
cout<<"cat="<<c<<" "<<"rest="<<rest<<endl;
cout<<"DESCOMPUNERE "<<n<<endl;
descompunere(n,i,j);
cout<<"Combinari("<<n<<","<<k<<")"<<endl;
cout<<combinari(n,k)<<endl;
cout<<"Combinari2("<<n<<","<<k<<")"<<endl;
cout<<combinari2(n,k)<<endl;
cout<<"Afisare cifre"<<endl;
cifre(n);
cout<<"Suma cifrelor"<<endl;
cout<<sumacifre(n)<<endl;
cout<<"Baza 2"<<endl<<n<<"(10)="<<baza(n,bb)<<"(2)"<<endl;
}

joi, 24 martie 2011 by DlMuresan
Categories: , , , | Leave a comment

Funcţii recursive - Temă 18 martie

Factorial

#include<iostream>
using namespace std;
int factorial(int n)
{if(n==0)
    return 1;
else return n*factorial(n-1);
}

int main()
{int n;
cin>>n;
cout<<factorial(n);
}
Cmmdc provaidat de algoritmul d-lui Euclid
#include<iostream>
using namespace std;
int cmmdc(int a, int b)
{ if(b==0)
    return a;
else return cmmdc(b, a%b);
}

int main()
{int a,b;
cin>>a>>b;
cout<<cmmdc(a,b);
}
Să se afişeze toate prefixele unui numar natural n
#include<iostream>
using namespace std;
void prefix(int n)
{if(n!=0)
    cout<<n<<endl;
prefix(n/10);
}

int main()
{int n;
cin>>n;
prefix(n);
}
Suma cifrelor unui număr
#include<iostream>
using namespace std;
int suma(int n)
{if(n==0)
    return 0;
else return n%10+suma(n/10);
}

int main()
{int n;
cin>>n;
cout<<suma(n);
}
Numărul de cifre impare dintr-un număr
#include<iostream>
using namespace std;
int nrimp(int n)
{if(n==0)
    return 0;
else return n%2+nrimp(n/10);
}

int main()
{int n;
cin>>n;
cout<<nrimp(n);
}

joi, 17 martie 2011 by DlMuresan
Categories: , , , | Leave a comment

Tabla 'multirii + TEMĂ 17 martie

Să se afişeze tabla 'mulţirii. BAC?

#include<iostream>

using namespace std;
void citire(int &n)
{cin>>n;
}
void afisare(int n)
{int i;
for(i=1;i<=n;i++)
cout<<n<<"*"<<i<<"="<<n*i<<endl;
}
int main()
{int n;
citire(n);
afisare(n);
}

Să se afişeze toate numerele de 3 cifre care sunt divizibile cu produsul divizorilor lor.
#include<iostream>
using namespace std;

char* verificare(int n)
{int nn,i,p,c;
p=1;
nn=n;
while(n)
{   c=n%10;
    p=p*c;
    n=n/10;
}
if(nn%p==0)
    return "DA";
else return "NU";
}

int main()
{int n,i=1,nn,ok;
for(n=1000;n<INT_MAX;n++)
{    nn=n;
    ok=1;
    while(nn)
{        if(nn%10==0)
            ok=0;
        nn=nn/10;
}
    if(ok==1)
        if(verificare(n)=="DA")
            {cout<<n<<endl;
            i++;}
          
    if(i>10)
        break;
}
}

by DlMuresan
Categories: , , , | Leave a comment

Jocul "Piticot"

#include<iostream>
#include<graphics.h>
#define M 800
#define N 150
using namespace std;

int a[100],b[100];

void jucator(int &s1)
{
s1=s1+rand()%6+1;

switch(s1)
{
case 8: cout<<"POZITIA 8: Ai prins un inorog. Incaleca pe el si sari la nr. 12: "<<endl; s1=12;break;
case 11: cout<<"POZITIA 11: Balaurul te invinge in lupta. Intoarce-te la nr.1: "<<endl;s1=1;break;
case 14: cout<<"POZITIA 14: Ai ajuns in gradina fermecata. Prinzi puteri magice si zbori la nr. 19: "<<endl; s1=s1+19;break;
case 17: cout<<"POZITIA 17: Te-ai ratacit in Tara lui Aladin. Intoarce-te la nr. 13: "<<endl; s1=13; break;
case 21: cout<<"POZITIA 21: Ingerul tau pazitor te ajuta sa ajungi la nr. 26: "<<endl; s1=26; break;
case 25: cout<<"POZITIA 25: Mosul care are coasa te-a gasit. Paraseste jocul definitiv."<<endl; break;
case 33: cout<<"POZITIA 33: Vulpea cea vicleana te goneste la nr. 27: "<<endl; s1=27;break;
case 40: cout<<"POZITIA 40: Spiridusul ghidus iti da apa vietii. Sari la nr. 44: "<<endl; s1=44;break;
case 43: cout<<"POZITIA 43: Ai ratacit drumul si ai ajuns la Polul Nord. Intoarce-te la nr. 38: "<<endl; s1=38;break;
case 46: cout<<"POZITIA 46: Un pitic poznas te invata sa alergi. Fugi la nr. 52: "<<endl;s1=52; break;
case 49: cout<<"POZITIA 49: Dragonul marilor iti taie calea. Intoarce-te la nr. 45: "<<endl;s1=45;break;
case 53: cout<<"POZITIA 53: Bunul om de zapada te ajuta sa ajungi la nr. 57: "<<endl; s1=57;break;
case 58: cout<<"POZITIA 58: Lupul cel rau te intoarce la nr. 50: "<<endl; s1=50;break;
case 62: cout<<"POZITIA 62: Spiridusul jucariilor iti arata o scurtatura pana la nr. 65: "<<endl; s1=65; break;
case 66: cout<<"POZITIA 66: Chichi fantoma glumeata te incurca si gresesti drumul. Intoarce-te la nr. 56: "<<endl;s1=56;break;
case 70: cout<<"POZITIA 70: Iedul buclucas te ajuta sa ocolesti Tara vrajitoareai. Mergi la nr. 75: "<<endl; s1=75;break;
case 78: cout<<"POZITIA 78: Zana cea buna te indruma la ascunzatoarea comorii. Intri direct in casuta 80: "<<endl; s1=80;break;
case 80: cout<<"POZITIA 80: Ai gasit COMOARA LUI PITICOT.Ai terminat invingator."<<endl; break;
default: cout<<"ai ajuns pe pozitia: "<<s1<<endl;break;
}
}

void desenare(int a[], int b[], int i, int j)
{int ii,jj,p,f;
char c[100];
    initwindow(M,N,"PITICOT");
outtextxy(10,10,"Primul jucator");
outtextxy(10,70,"Al doilea jucator");
p=0;
for(ii=0;ii<i;ii++)
    {itoa(a[ii],c,10);
    f=rand()%15+1;
    setcolor(f);
    outtextxy(15+p,25,c);
    p+=25;}
p=0;
for(jj=0;jj<j;jj++)
    {itoa(b[jj],c,10);
    f=rand()%15+1;
    setcolor(f);
    outtextxy(15+p,85,c);
    p+=25;}
       
delay(100000000);
}

int main ()
{int s1=0,s=0,i=0,j=0,ii,jj;
srand(time(NULL));
while(s<=80 && s1<=80)
    {jucator(s1);
    a[i]=s1;i++;
        if(s1==25)
            {cout<<"jucator 2 castiga";
            break;}
        if(s1==80 || s1>80)
            {cout<<"jucator 1 castiga";
            break;}
    jucator(s);
    b[j]=s;j++;
        if(s==25)
            {cout<<"jucator 1 castiga";
            break;}
        if(s==80 || s>80)
            {cout<<"jucator 2 castiga";
            break;}
    }

   
    desenare(a,b,i,j);
}

marți, 15 martie 2011 by DlMuresan
Leave a comment

Loto 6/49 draft cu grafica

#include<iostream>
#include<fstream>
#include<math.h>
#include<cstdlib>
#include<graphics.h>
#define N 1100
#define M 600
using namespace std;
struct player
{int numere[100];
int ghicit;
char nume[100];
float castig;};

void fort(int a[])
{ int u,p=0,i,ok;
    u=rand()%49+1;
a[0]=u;
p++;
while(p<6)
{
    ok=0;
    u=rand()%49+1;
    for(i=0;i<p;i++)
    {
        if(a[i]==u)
            ok=1;
    }
    if(ok==0)
    {
        a[p]=u;
        p++;
    }
}
}

void citire(float &F, int &n, float &R, player v[], int a[])
{ifstream f("loto");
int i,i1,k;
f>>F;
R=F;
f>>n;
i1=0;
for(k=1;k<=n;k++)
{
f>>v[k].nume;

for(i=0;i<6;i++)
{   f>>v[k].numere[i];
    for(i1=0;i1<6;i1++)
    {
        if(v[k].numere[i]==a[i1])
        {
            v[k].ghicit++;
        }
    }
}
}
}

void nr_castigatoare(int a[])
{int i;
cout<<"Numerele castigatoare: ";
for(i=0;i<6;i++)
{
    cout<<a[i]<<" ";
}
}

void inversare(player v[], int n, int c[])
{int max,k,t;
max=0;cout<<endl<<endl;
for(k=1;k<=n;k++)
    if(v[k].ghicit>=max)
        max=v[k].ghicit;

for(k=1;k<=n;k++)
    for(t=k+1;t<=n;t++)
        if(v[k].ghicit<v[t].ghicit)
            swap(v[k],v[t]);

for(k=1;k<=n;k++)
    if(v[k].ghicit>1)
        c[v[k].ghicit]++;
}

void calculare(player v[], int n, float &R, float F, int c[])
{int k;
cout<<"TOP: "<<endl;
    for(k=1;k<=n;k++)
    {    if(v[k].ghicit==1 || c[v[k].ghicit]==0)
            v[k].castig=0;
    else{
        switch(v[k].ghicit)
    {case 6 : v[k].castig=40*F/100;break;
    case 5 : v[k].castig=25*F/100;break;
    case 4 : v[k].castig=20*F/100;break;
    case 3 : v[k].castig=10*F/100;break;
    case 2 : v[k].castig=5*F/100;break;}
        v[k].castig=v[k].castig/c[v[k].ghicit];
        }
        R=R-v[k].castig;
    }

}

void afisare(player v[],int n,int a[],int R)
{int k,j,i;
    for(k=1;k<=n;k++)
    {cout<<k<<"."<<v[k].nume<<" cu "<<v[k].ghicit<<" numere ghicite(";
    for(i=0;i<6;i++)
{    for(j=0;j<6;j++)
        if(a[i]==v[k].numere[j])
            cout<<a[i]<<" ";
}
    cout<<"). Castig: "<<v[k].castig<<endl;
    }

cout<<"Report: "<<R;
}

void grafica(int n, int a[], player v[])
{int j=0,i,i1,k,max,c[100]={0},t,p=0,u,ok,l,u1,u2,dlm,ii,jj,x,s=10,sp,jp,dp,z;
char b[100];
x=n;
j=60;i=0;
initwindow(N,M,"Loto 6/49");
setfillstyle(1,5);
dlm=1;
while(i<x)
{
k=0;
p=0;
z=250;
dp=370;
bar(20,s,170,j);
while(p<6)
{
    u1=s+(j-s)/2;
    u2=z+(dp-z)/2;
   itoa(v[dlm].numere[k],b,10);
   k++;
    outtextxy(u2,u1, b);
    ok=0;
    for(ii=0;ii<6;ii++)
        if(a[ii]==v[dlm].numere[k-1])
                ok=1;
if(ok==1)
{
    bar(z,s,dp,j);
    outtextxy(u2,u1, b);
}
else rectangle(z,s,dp,j);
z=dp+10;
dp=z+120;
p++;
}
i++;
s=j+10;
j=s+50;
dlm++;
}
p=0;
for(i=1;i<=x;i++)
{    outtextxy(40, 27+p, v[i].nume);
p+=60;
l=0;
}
delay(10000000);
}


int main()
{int a[100]={0},j=0,i,i1,n,k,max,c[100]={0},t,p=0,u,ok,l,u1,u2,dlm,ii,jj,x,s=10,sp,jp,dp,z;
char b[100];
float F,R;
player v[100];
srand(time(NULL));
fort(a);
citire(F,n,R,v,a);
nr_castigatoare(a);
inversare(v,n,c);
calculare(v,n,R,F,c);
afisare(v,n,a,R);
grafica(n,a,v);
}

miercuri, 9 martie 2011 by DlMuresan
Leave a comment

Lotto 6/49

Programul genereaza 6 numere din intervalul [1,49] şi citeşte dintr-un fişier text fondul de câştiguri pentru o tragere la sorţi, numărul de jucători, numele acestora şi cele 6 numere alese. Se calculează numărul de numere ghicite de fiecare jucător, se afişează numerele generate aleatoriu, iar mai apoi un top al câştigătorilor care include numele, numărul de numere ghicite, numerele ghicite şi câştigul aferent. La sfârşit se va afişa reportul(diferenţa dintre fondul de câştiguri şi suma câştigurilor jucătorilor).

Câştigul pentru fiecare concurent se calculează în felul următor:

pentru 6 numere ghicite = 40% din FOND
pentru 5 numere ghicite = 25% din FOND
pentru 4 numere ghicite = 20% din FOND
pentru 3 numere ghicite = 10 % din FOND
pentru 2 numere ghicite = 5 % din FOND
În cazul în care la o anumită categorie sunt mai mulţi câştigători, câştigul se va împărţi în mod egal.
#include<iostream>
#include<fstream>
#include<math.h>
#include<cstdlib>
using namespace std;
struct player
{int numere[100];
int ghicit;
char nume[100];
float castig;};

void fort(int a[])
{ int u,p=0,i,ok;
    u=rand()%49+1;
a[0]=u;
p++;
while(p<6)
{
    ok=0;
    u=rand()%49+1;
    for(i=0;i<p;i++)
    {
        if(a[i]==u)
            ok=1;
    }
    if(ok==0)
    {
        a[p]=u;
        p++;
    }
}
}

void citire(float &F, int &n, float &R, player v[], int a[])
{ifstream f("loto");
int i,i1,k;
f>>F;
R=F;
f>>n;
i1=0;
for(k=1;k<=n;k++)
{
f>>v[k].nume;

for(i=0;i<6;i++)
{   f>>v[k].numere[i];
    for(i1=0;i1<6;i1++)
    {
        if(v[k].numere[i]==a[i1])
        {
            v[k].ghicit++;
        }
    }
}
}
}

void nr_castigatoare(int a[])
{int i;
cout<<"Numerele castigatoare: ";
for(i=0;i<6;i++)
{
    cout<<a[i]<<" ";
}
}

void inversare(player v[], int n, int c[])
{int max,k,t;
max=0;cout<<endl<<endl;
for(k=1;k<=n;k++)
    if(v[k].ghicit>=max)
        max=v[k].ghicit;

for(k=1;k<=n;k++)
    for(t=k+1;t<=n;t++)
        if(v[k].ghicit<v[t].ghicit)
            swap(v[k],v[t]);

for(k=1;k<=n;k++)
    if(v[k].ghicit>1)
        c[v[k].ghicit]++;
}

void calculare(player v[], int n, float &R, float F, int c[])
{int k;
cout<<"TOP: "<<endl;
    for(k=1;k<=n;k++)
    {    if(v[k].ghicit==1 || c[v[k].ghicit]==0)
            v[k].castig=0;
    else{
        switch(v[k].ghicit)
    {case 6 : v[k].castig=40*F/100;break;
    case 5 : v[k].castig=25*F/100;break;
    case 4 : v[k].castig=20*F/100;break;
    case 3 : v[k].castig=10*F/100;break;
    case 2 : v[k].castig=5*F/100;break;}
        v[k].castig=v[k].castig/c[v[k].ghicit];
        }
        R=R-v[k].castig;
    }

}

void afisare(player v[],int n,int a[],int R)
{int k,j,i;
    for(k=1;k<=n;k++)
    {cout<<k<<"."<<v[k].nume<<" cu "<<v[k].ghicit<<" numere ghicite(";
    for(i=0;i<6;i++)
{    for(j=0;j<6;j++)
        if(a[i]==v[k].numere[j])
            cout<<a[i]<<" ";

    cout<<")Castig: "<<v[k].castig<<endl;
    }

cout<<"Report: "<<R;
}


int main()
{int a[100]={0},j=0,i,i1,n,k,max,c[100]={0},t,p=0,u,ok;
float F,R;
player v[100];
ifstream f("loto");
srand(time(NULL));
fort(a);
citire(F,n,R,v,a);
nr_castigatoare(a);
inversare(v,n,c);
calculare(v,n,R,F,c);
afisare(v,n,a,R);
}
Fişierul
1000
8
Dorel 1 2 3 4 5 6
Stoica 7 8 9 10 11 12
Andreev 13 14 15 16 17 18
Piturca 19 20 21 22 23 24
Basescu 25 26 27 28 29 30
Marius 31 32 33 34 35 36
Zanetti 37 38 39 40 41 42
Castro 43 44 45 46 47 48

by DlMuresan
Categories: , | Leave a comment

Temă 4 martie - transformare vector

Se dă un vector cu n elemente numere întregi. Să se transforme vectorul, aplicând următoarea regulă: dacă 2 elemente alăturate sunt egale, unul din acestea se elimină. Să se afişeze toate transformările vectorului.

#include<iostream>
using namespace std;
void citire(int a[], int &n)
{int i;
cout<<"Dati citire lungii vectorului"<<endl;
cin>>n;
cout<<"Dati citire elementelor vectorului"<<endl;
for(i=0;i<n;i++)
    cin>>a[i];
}

void afisare(int a[], int n)
{int i;
cout<<endl;
for(i=0;i<n;i++)
    cout<<a[i]<<" ";
}

void stergere(int a[], int &n,int poz)
{int i;
for(i=poz;i<n-1;i++)
    a[i]=a[i+1];
n=n-1;
}

void cautare_duble(int a[],int n,int &poz)
{
int i;
poz=-1;
for(i=0;i<n-1;i++)
    if(a[i]==a[i+1])
        {poz=i;
        break;}
   
}

int main()
{
int n,a[100],poz;
citire(a,n);
cautare_duble(a,n,poz);
while(poz!=-1)
{
cautare_duble(a,n,poz);
if(poz!=-1)
{

stergere(a,n,poz);
afisare(a,n);
cout<<endl;
}
}

}

joi, 3 martie 2011 by DlMuresan
Categories: , , | 2 comments

2 martie - aplicaţie complexă pe unul din vectori

Se dă un vector format din n elemente, toate cifre. Să se efectueze urmatoarele operaţii până când vectorul nu va mai conţine elemente(lungimea sa va fi egală cu 0):
- cautarea elementului 0 si eliminarea tuturor elementelor din stânga lui şi a sa
- calcularea mediei aritmetice a elementelor rămase în tablou
- căutarea ultimei apariţii(de la stânga la dreapta, de la 0 la n) a mediei aritmetice în vector; (în cazul în care medie aritmetică(partea întreagă) nu se regăseşte în vector se va căuta ultima apariţie a celui mai mare element mai mic decât media aritmetică
- scăderea valorii 1 din acest element în cazul în care este impar şi a valorii 2 în cazul în care este par
Să se afişeze numărul de paşi necesari parcurgerii programului pentru eliminarea tuturor elementelor din vector şi toate modificările făcute asupra vectorului.

#include<iostream>
using namespace std;
void citire(int &n,int x[])
{int i;
cin>>n;
cout<<endl<<"Cititi elementele vecetorului";
for(i=0;i<n;i++)
cin>>x[i];
}

void cauta_zero(int n,int x[],int &poz)
{
int i;
poz=-1;
for(i=n-1;i>=0;i--)
{
if(x[i]==0)
{ poz=i;
break;
}
}
}

void sterge(int &n,int x[],int poz)
{int i;
for(i=poz+1;i<n;i++)
x[i-poz-1]=x[i];
n=n-poz-1;
}

void afisare(int n, int x[])
{int i;
cout<<endl;
for(i=0;i<n;i++)
cout<<x[i]<<" ";
cout<<endl;
}

int media(int n,int x[]){
int i,m,s=0;
for(i=0;i<n;i++)
s=s+x[i];
m=s/n;
return m;}

void scade(int n, int x[], int poz1)
{
if(x[poz1]%2==0)
x[poz1]=x[poz1]-2;
else x[poz1]=x[poz1]-1;
}
void cauta_media( int n, int x[], int m, int &poz1)
{ int i;
poz1=-1;
for(i=n-1;i>=0;i--)
if(x[i]==m){ poz1=i;break;}
}
void cauta_numar(int n,int x[],int m,int &poz1)
{int i,m1=0;
for(i=0;i<n;i++)
if( x[i]<m && x[i]>=m1)
{m1=x[i]; poz1=i; }
}
int main()
{int n,x[100],poz,m,poz1,DLM=1;
cout<<"Cititi lungimea vectorului, iar mai apoi elementele"<<endl;
citire(n,x);
while(n)
{cauta_zero(n,x,poz);
if(poz!=-1)
{sterge(n,x,poz);
afisare(n,x);}
if(n==0)
break;
m=media(n,x);
cauta_media(n,x,m,poz1);
if(poz1==-1)
cauta_numar(n,x,m,poz1);
scade(n,x,poz1);
afisare(n,x);
DLM++;
}
cout<<endl<<DLM<<" incercari";
return 0;}

miercuri, 2 martie 2011 by DlMuresan
Categories: , , | Leave a comment