Dani_info

Tema 18.09.2018

Sep 16th, 2018
94
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <cmath>
  3.  
  4. using namespace std;
  5.  
  6. bool isPrime (int);
  7. int nrDivPrimi(int);
  8.  
  9. int main()
  10. {
  11.     cout <<"Introdu nr probl.";
  12.     int pb; cin>>pb;
  13.     switch (pb){
  14.         case 1:{
  15.             int s=0, cnt=0, n;
  16.             cout<<"Introdu nr:"<<endl;
  17.             do{
  18.                 cin>>n;
  19.                 if (n%3==0 && n!=0){
  20.                     s+=n;
  21.                     cnt++;
  22.                 }
  23.             }while (n!=0);
  24.             if (cnt!=1){
  25.                 float  ma=s*1.0/cnt*1.0;
  26.                 cout<<"Media aritmetica este: "<<ma;
  27.             }
  28.             else
  29.                 cout<<"Nu exista astfel de nr.";
  30.  
  31.         }
  32.         case 2:{
  33.             int n; cout<<"n="; cin>>n;
  34.             int nmax=INT_MIN, cnt=0;
  35.             cout<<"Inntrodu nr:"<<endl;
  36.             for (int i=0; i<n; i++){
  37.                 int x; cin>>x;
  38.                 if (isPrime(x) && x>nmax)
  39.                     nmax=x;
  40.                 if (nrDivPrimi(x)==3)
  41.                     cnt++;
  42.             }
  43.             cout<<"Cel mai mare nr prim este:"<<nmax<<endl;;
  44.             cout<<"Exista "<<cnt<<" nr cu exact 3 div primi";
  45.             break;
  46.         }
  47.  
  48.         case 3:{
  49.             int n; cout<<"n="; cin>>n;
  50.             int nr1=1, nr2=1;
  51.             int nr3=0, difmin=INT_MAX;
  52.             int nrapropiat, nrapropiat2, ok=0;
  53.             for (int i=3; nr3<n; i++){
  54.                 nr3=nr1+nr2;
  55.                 nr1=nr2;
  56.                 nr2=nr3;
  57.                 cout<<nr3<<" ";
  58.                 if (abs(nr3-n)==difmin){
  59.                     nrapropiat2=nr3;
  60.                     ok=1;
  61.                 }
  62.                 else {
  63.                     if(abs(nr3-n)<difmin){
  64.                         difmin=abs(nr3-n);
  65.                         nrapropiat=nr3;
  66.                     }
  67.                 }
  68.             }
  69.             if (!ok)
  70.                 cout<<"Numarul cel mai apropiat este: "<<nrapropiat;
  71.             else
  72.                  cout<<"Numerele cele mai apropiate sunt: "<<nrapropiat <<" si "<<nrapropiat2;
  73.         }
  74.  
  75.     }
  76.     return 0;
  77. }
  78.  
  79.     bool isPrime(int n){
  80.         if (n==1)
  81.             return false;
  82.         for (int i=2; i<n; i++){
  83.             if (n%i==0)
  84.                 return false;
  85.         }
  86.         return true;
  87.     }
  88.  
  89.     int nrDivPrimi(int n){
  90.         int cnt=0;
  91.         for (int i=2; i<n; i++){
  92.             if (n%i==0 && isPrime(i))
  93.                 cnt++;
  94.         }
  95.         return cnt;
  96.     }
RAW Paste Data Copied