Informatică, întrebare adresată de valyrody, 8 ani în urmă

Se citeste un vector cu n elemente numere intregi si un
nr k natural Sa se rezolve urmatoarele cerinte:
a) Sa se afiseze cate elemente au suma cifrelor
egala cu k
b) Sa se afiseze cate elemente prime sunt mai mari
decat k in sirul citit
c) Daca k<n atunci sa se sorteze crescator primele k
elemente si descrescator urmatoarele n-k
elemente din vector
d) Sa se afiseze toate elementele din sir care au
exact k divizori

Răspunsuri la întrebare

Răspuns de anonim21212
1

Răspuns:

#include <iostream>

using namespace std;

unsigned int n,k,i,j,aux,nrelem_scif,nrprime;

unsigned int prim(unsigned int x)

{

   unsigned int d;

   if(x<=1)

       return 0;

   if(x==2)

       return 1;

   if(x%2==0 && x!=2)

       return 0;

   for(d=3;d*d<=x;d+=2)

       if(x%d==0)

           return 0;

   return 1;

}

unsigned int nrdivizori(unsigned int p)

{

   unsigned int nrdiv=0,i;

   for(i=2;i<=p/2;i++)

   {

       if(p%i==0)

           nrdiv++;

   }

   return nrdiv+2;

}

int main()

{

   cin>>n>>k;

   int v[n];

   for(i=0;i<n;i++)

   {

       cin>>v[i];

       int m=v[i];

       unsigned s=0;

       while(m)

       {

           s+=m%10;

           m/=10;

       }

       if(k==s)

           nrelem_scif++;

   }

   cout<<"Numarul elementelor care au suma cifrelor egala cu "<<k<<" este: "<<nrelem_scif<<endl;

   for(i=0;i<n;i++)

   {

       if(prim(v[i])==1 && v[i]>k)

           nrprime++;

   }

   cout<<"In sirul citit, exista "<<nrprime<<" numere prime"<<endl;

   if(k<n)

   {

       for(i=0;i<k-1;i++)

       {

           for(j=i+1;j<k;j++)

               if(v[i]>v[j])

               {

                   aux=v[i];

                   v[i]=v[j];

                   v[j]=aux;

               }

       }

       for(i=k;i<n-1;i++)

       {

           for(j=i+1;j<n;j++)

               if(v[i]<v[j])

               {

                   aux=v[i];

                   v[i]=v[j];

                   v[j]=aux;

               }

       }

       cout<<"Dupa sortarea ceruta, vectorul arata astfel: ";

       for(i=0;i<n;i++)

           cout<<v[i]<<' ';

       cout<<endl;

   }

   cout<<"Elementele din sir care au exact "<<k<<" divizori sunt: ";

   for(i=0;i<n;i++)

   {

       if(nrdivizori(v[i])==k)

           cout<<v[i]<<' ';

   }

   return 0;

}

Explicație:

Alte întrebări interesante