Orar semigroup #2

Orar semigroup #2

21 aprilie - probleme

Se citeste un nr mare. Sa se afiseze daca exista cel mai mic nr. care se poate forma din cifrele acestuia si care sa fie mai mare decat nr. initial.

#include<iostream>
using namespace std;
int main()
{int n,i,a[100],aux,poz,j;
cout<<"n=";cin>>n;
for(i=0;i<n;i++)
{cout<<"a["<<i<<"]=";cin>>a[i];}

poz=n-1;
while(poz>0 && a[poz-1]>=a[poz])
    poz--;

if(poz==0){cout<<"nu exista";return 0;}

for(j=n-1;j>poz-1;j--)
    if(a[j]>a[poz-1])
        break;
  
aux=a[j];
a[j]=a[poz-1];
a[poz-1]=aux;

for(i=poz;i<=(n-1+poz)/2;i++)
{aux=a[i];
a[i]=a[poz+n-1-i];
a[poz+n-1-i]=aux;}

for(i=0;i<n;i++)
    cout<<a[i]<<" ";

}

2) Generarea permutarilor sirului {1,2,3,4}

#include<iostream>
using namespace std;
int main()
{int n,i,a[100],aux,poz,j;
cout<<"n=";cin>>n;
for(i=0;i<n;i++)
a[i]=i+1;
for(i=0;i<n;i++)
    cout<<a[i]<<" ";
cout<<endl;
while (1)
{   
poz=n-1;
while(poz>0 && a[poz-1]>=a[poz])
    poz--;

if(poz==0)return 0;

for(j=n-1;j>poz-1;j--)
    if(a[j]>a[poz-1])
        break;
   
aux=a[j];
a[j]=a[poz-1];
a[poz-1]=aux;

for(i=poz;i<=(n-1+poz)/2;i++)
{aux=a[i];
a[i]=a[poz+n-1-i];
a[poz+n-1-i]=aux;}
for(i=0;i<n;i++)
    cout<<a[i]<<" ";
cout<<endl;
}
}

vineri, 9 iulie 2010 by DlMuresan
Categories: , , | Leave a comment

Leave a Reply