Advertisement
Guest User

Untitled

a guest
Feb 19th, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.86 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <math.h>
  4.  
  5. using namespace std;
  6.  
  7. class Numere {
  8. public:
  9.     int nr1;
  10.     int nr2;
  11.     Numere();
  12.     Numere(int, int);
  13.     void Adunare();
  14. };
  15.  
  16. Numere::Numere() {
  17.     nr1 = 0;
  18.     nr2 = 0;
  19. }
  20.  
  21. Numere::Numere(int a, int b) {
  22.     nr1 = a;
  23.     nr2 = b;
  24. }
  25.  
  26. void Numere::Adunare() {
  27.     cout<<nr1+nr2;
  28. }
  29.  
  30. void pb1() {
  31.     int a, b;
  32.     cout<<"a = "; cin>>a;
  33.     cout<<"b = "; cin>>b;
  34.     Numere x;
  35.     x.nr1 = a;
  36.     x.nr2 = b;
  37.     x.Adunare();
  38. }
  39.  
  40. class NumerePerfecte {
  41. public:
  42.     int inf;
  43.     int sup;
  44.     int suma;
  45.     NumerePerfecte();
  46.     NumerePerfecte(int, int);
  47.     void ParcurgereNumere();
  48.     int SumaDivizori(int);
  49.     void AfisareNumar(int);
  50. };
  51.  
  52. NumerePerfecte::NumerePerfecte() {
  53.     inf = 0;
  54.     sup = 0;
  55.     suma = 0;
  56. }
  57.  
  58. NumerePerfecte::NumerePerfecte(int a, int b) {
  59.     inf = a;
  60.     sup = b;
  61. }
  62.  
  63. int NumerePerfecte::SumaDivizori(int x) {
  64.     if (x == 0 || x == 1) {
  65.         return 1;
  66.     }
  67.     int i, suma = 1;
  68.     for (i = 2; i <= x/2; i++) {
  69.         if (x % i == 0) {
  70.             suma+=i;
  71.         }
  72.     }
  73.     return suma;
  74. }
  75.  
  76. void NumerePerfecte::AfisareNumar(int x) {
  77.     cout<<x<<" ";
  78. }
  79.  
  80. void NumerePerfecte::ParcurgereNumere() {
  81.     int i;
  82.     for (i = inf; i <= sup; i++) {
  83.         if (NumerePerfecte::SumaDivizori(i) == i) {
  84.             NumerePerfecte::suma += i;
  85.         }
  86.     }
  87.     NumerePerfecte::AfisareNumar(NumerePerfecte::suma);
  88. }
  89.  
  90. void pb2() {
  91.     int a, b;
  92.     cout<<"Limita inferioara = "; cin>>a;
  93.     cout<<"Limita superioara = "; cin>>b;
  94.     NumerePerfecte x;
  95.     x.inf = min(a, b);
  96.     x.sup = max(a, b);
  97.     x.ParcurgereNumere();
  98.  
  99. }
  100.  
  101. typedef struct {
  102.     char forma[50];
  103.     double gem;
  104.     double frisca;
  105. } forme;
  106.  
  107. class Bunicuta {
  108. protected:
  109.     double pi = 3.1415;
  110. public:
  111.     int contor;
  112.     forme Forme[100];
  113.     Bunicuta();
  114.     void Add(char*, int, int, int);
  115.     void Remove(int);
  116. };
  117.  
  118. Bunicuta::Bunicuta() {
  119.     contor = 0;
  120. }
  121.  
  122. void Bunicuta::Remove(int x) {
  123.     for (int i = x; i < contor; i++) {
  124.         Forme[i] = Forme[i+1];
  125.     }
  126.     contor--;
  127. }
  128.  
  129. void Bunicuta::Add(char forma[50], int v1, int v2, int v3 = 0) {
  130.     double perimetruB = 0, ariaB = 0;
  131.     contor++;
  132.     strcpy(Forme[contor].forma, forma);
  133.     if (strcmp(Forme[contor].forma, "cerc") == 0) {
  134.         perimetruB = 2 * pi * v1;
  135.         ariaB = pi * v1 * v1;
  136.         Forme[contor].gem = ariaB * v2 * 2;
  137.         Forme[contor].frisca = perimetruB * v2;
  138.     } else if (strcmp(Forme[contor].forma, "dreptunghi") == 0) {
  139.         perimetruB = 2*(v1 + v2);
  140.         ariaB = v1 * v2;
  141.         Forme[contor].gem = ariaB * v3 * 2;
  142.         Forme[contor].frisca = perimetruB * v3;
  143.     } else if (strcmp(Forme[contor].forma, "patrat") == 0) {
  144.         perimetruB = 4*v1;
  145.         ariaB = v1 * v1;
  146.         Forme[contor].gem = ariaB * v2 * 2;
  147.         Forme[contor].frisca = perimetruB * v2;
  148.     } else if (strcmp(Forme[contor].forma, "triunghi") == 0) {
  149.         double ipotenuza = sqrt(v1*v1 + v2*v2);
  150.         perimetruB = (double) v1 + v2 + ipotenuza;
  151.         ariaB = (double) v1*v2/2;
  152.         Forme[contor].gem = ariaB * v3 * 2;
  153.         Forme[contor].frisca = perimetruB * v3;
  154.     }
  155.     cout<<Forme[contor].gem<<" "<<Forme[contor].frisca<<"\n";
  156. }
  157.  
  158. void pb3() {
  159.     Bunicuta x;
  160.     char opt[10];
  161.     char forma[50];
  162.     cout<<"Optiunea ta (ADD/REMOVE/STOP): ";
  163. //    cin.get(opt, 10);
  164. //    cin.get();]
  165. //    cin>>opt;
  166.     while (strcmp(opt, "STOP") != 0) {
  167.         cout<<"Optiunea ta (ADD/REMOVE/STOP): ";
  168. //        cin.get(opt, 10);
  169. //        cin.get();
  170.         cin>>opt;
  171.         if (strcmp(opt, "ADD") == 0) {
  172.             cout<<"Citeste forma (cerc, dreptunghi, patrat, triunghi): ";
  173. //            cin.get(forma, 50);
  174.             cin>>forma;
  175.             if (strcmp(forma, "cerc") == 0) {
  176.                 int raza, inaltime;
  177.                 cout<<"Citeste raza: ";
  178.                 cin>>raza;
  179.                 cout<<"Citeste inaltimea: ";
  180.                 cin>>inaltime;
  181.                 x.Add(forma, raza, inaltime);
  182.             } else if (strcmp(forma, "dreptunghi") == 0) {
  183.                 int l, L, inaltime;
  184.                 cout<<"Citeste latimea: "; cin>>l;
  185.                 cout<<"Citeste lungimea: "; cin>>L;
  186.                 cout<<"Citeste inaltimea: "; cin>>inaltime;
  187.                 x.Add(forma, l, L, inaltime);
  188.             } else if (strcmp(forma, "patrat") == 0) {
  189.                 int l, inaltime;
  190.                 cout<<"Citeste latura: "; cin>>l;
  191.                 cout<<"Citeste inaltimea: "; cin>>inaltime;
  192.                 x.Add(forma, l, inaltime);
  193.             } else if (strcmp(forma, "triunghi") == 0) {
  194.                 int c1, c2, inaltime;
  195.                 cout<<"Citeste cateta mica: "; cin>>c1;
  196.                 cout<<"Citeste cateta mare: "; cin>>c2;
  197.                 cout<<"Citeste inaltimea: "; cin>>inaltime;
  198.                 x.Add(forma, c1, c2, inaltime);
  199.             }
  200.         } else if (strcmp(opt, "REMOVE") == 0) {
  201.             int el;
  202.             cout<<"Elementul care va fi sters: "; cin>>el;
  203.             x.Remove(el);
  204.         }
  205.     }
  206.     double total_gem = 0, total_frisca = 0;
  207.     for (int i = 1; i <= x.contor; i++) {
  208.         total_gem += x.Forme[i].gem;
  209.         total_frisca += x.Forme[i].frisca;
  210.     }
  211.     cout<<"Total gem: "<<total_gem<<"\nTotal frisca: "<<total_frisca;
  212. }
  213.  
  214. int main() {
  215.     int option = 1;
  216.     while (option) {
  217.         cout<<"0. Opreste\n1. Problema 1\n2. Problema 2\n3. Problema 3\n";
  218.         cout<<"Optiunea ta: ";
  219.         cin>>option;
  220.         switch(option) {
  221.             case 1: {
  222.                 pb1();
  223.                 break;
  224.             }
  225.             case 2: {
  226.                 pb2();
  227.                 break;
  228.             }
  229.             case 3: {
  230.                 pb3();
  231.                 break;
  232.             }
  233.             default: break;
  234.         }
  235.         cout<<"\n";
  236.     }
  237.     return 0;
  238. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement