👤

Puteti sa imi rezolvati, va rog, acest exercitiu ? ( C++)

Puteti Sa Imi Rezolvati Va Rog Acest Exercitiu C class=

Răspuns :

#include <iostream>
using namespace std;

int apare_cifra(long n,int c){
int cifra,nr=0;
while(n>0){
cifra=n%10;
if(cifra==c){
nr++;
}
n=n/10;
}
return nr;
}
int main(){

long a;
int b,i,v[10];
cout<<"Introduceti numarul:";
cin>>a;
cout<<"Introduceti cifra:";
cin>>b;

/*a) Daca apare_cifra este mai mare ca 0
atunci apare, altfel nu apare*/
if(apare_cifra(a,b)>0){
cout<<"Apare cifra"<<endl;
}
else{
cout<<"Nu apare cifra"<<endl;
}
/*b)Ca sa verificam daca are toate cifrele distincte
    iteram prin toate cifrele si verificam daca numarul de aparitii este mai mare decat 1
daca este, inseamna ca numarul apare de doua ori, si atunci nu sunt distincte*/
  int distinct=1;
  for(i=0;i<10;i++){
   if(apare_cifra(a,i)>1){
   distinct=0;
   break;
  }
  }
  if(distinct>0){
   cout<<"Numarul are cifre distincte"<<endl;
  }
  else{
   cout<<"Numarul nu are cifre distincte"<<endl;
  }
/*c)Iteram de la cea mai mare cifra la cea mai mica, de la 9 pana la 0
    daca numarul de aparitii este mai mare ca 0, inseamna ca aceea este cea mai mare cifra*/  
  for(i=9;i>=0;i--){
   if(apare_cifra(a,i)>0){
   cout<<"Cifra cea mai mare este:"<<i<<endl;
   break;
  }
  }
/*d)Iteram din nou de la 9 la 0. Vedem de cate ori apare fiecare numar, si apoi le aranjam in acea zona
      de ex daca avem 123834, aven atunci 843321, deci 8, apoi 4, apoi 3 de doua ori cat apare in numar, apoi 2 si 1*/
  int cifre_mare=0,aparitii=0;
  for(i=9;i>=0;i--){
   if(apare_cifra(a,i)>0){
   aparitii=apare_cifra(a,i);
   while(aparitii>0){
   cifre_mare=10*cifre_mare+i;
   aparitii--;
  }
  }
  }     
  cout<<"Numarul cel mai mare cu cifrele existente:"<<cifre_mare<<endl;
/*e)Iteram prin cifrele impare si vedem daca cel putin doua cifre impare apar*/
   int cifre_impare=0;
   for(i=1;i<10;i=i+2){
    if(apare_cifra(a,i)>0){
    cifre_impare=cifre_impare+apare_cifra(a,i);
   }
   }
   if(cifre_impare>1){
    cout<<"Apar mai multe cifre impare"<<endl;
   }
   else{
    cout<<"Nu apar mai multe cifre impare"<<endl;
   }
/*f)Iteram din nou de la 0 la 9, si incrementam cu 1 de fiecare data cand gasim o cifra care apare in numar.
Daca contorul va fi mai mare ca 1, inseamna ca sunt mai multe cifre in numar, deci nu toate cifrele sunt egale*/
  int nr_cifre=0;
   for(i=0;i<10;i++){
    if(apare_cifra(a,i)>0){
    nr_cifre++;
   }
   }
   if(nr_cifre>1){
    cout<<"Nu toate cifrele sunt egale";
   }
   else{
    cout<<"Toate cifrele sunt egale";
   }


  return 0;
}