👤

Cine stie cum sa rezolve problemele in c++?
Tehnica Trierii

1)Elaborati un program care determina cate puncte cu coordonate intregi se contin Intr-o sfera de raza R cu centrul in originea sistemului de coordonate.
Se considera ca R este un numar natural, 1=R=30. Distanta d dintre un punct cu coordonatele (x, y, z) si originea sistemului de coordonate se determina dupa formula: d=v(x^2+y^2+z^2 ).

Tehnica Greedy

1)Suma componentelor prime. Fie A o variabila indexata, ale carei componente A(1), A(2),..., A(n) sunt numere naturale nenule.
Sa se determine suma componentelor care sunt numere prime. Atunci cand un numar prim se repeta, el va fi luat in consideratie o singura data.


Răspuns :

Răspuns:

***************************** Triere **************************

#include <iostream>

using namespace std;

struct punct

{

   int x,y,z;

}P;

int n,i,k,R;

int Distanta(punct P)

{

   return P.x*P.x+P.y*P.y+P.z*P.z;

}

bool SolutiePosibila(punct P)

{

   if (Distanta(P)<=R*R) return true;

   else return false;

}

void PrelucrareaSolutiei(int &k)

{

   ++k;

}

int main()

{

   cout << "Introdu raza sferei, R= "; cin >> R;

   cout << "nr. de puncte, n= "; cin >> n;

   cout << "Introduceti coordonatele x,y,z a " << n << " puncte \n";

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

   {

       cout << "pentru punctul " << i << " : ";

       cin >> P.x >> P.y >> P.z;

       if (SolutiePosibila(P))

           PrelucrareaSolutiei(k);

   }

   cout << "In sfera se contin " << k << " puncte";

   return 0;

}

Explicație:

************************ Greedy ***********************

#include <iostream>

using namespace std;

int n, A[100], B[100], m,x,i;

bool prim(int num)

{

   if (num<2) return false;

   if (num==2) return true;

   if (num>2)

   {

       if (num%2==0) return false;

       for (int d=3; d*d<=num; d+=2)

           if (num%d==0) { return false; }

       return true;

   }

}

bool nuSeRepeta(int num)

{

   int i;

   bool nurepeta=true;

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

   if (num==B[i]) { nurepeta=false; break; }

   return nurepeta;

}

bool ExistaElemente()

{

   int i;

   bool exista=false;

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

       if (prim(A[i]) && nuSeRepeta(A[i])) exista=true;

   return exista;

}

void AlegeUnElement(int &x)

{

   int i=0;

   while (!(prim(A[i]) && nuSeRepeta(A[i]))) ++i;

   x=A[i]; A[i]=0;

}

void IncludeElementul(int x, int &m)

{

   B[m++]=x;

}

int main()

{

   cout << "n= "; cin >> n;

   cout << "introdu " << n << " numere naturale \n";

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

       cin >> A[i];

   while (ExistaElemente())

   {

       AlegeUnElement(x);

       IncludeElementul(x,m);

   }

   int suma=0;

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

       suma+=B[i];

   cout << "Suma primelor= " << suma;

   return 0;

}

Vă mulțumim că ați ales să vizitați platforma noastră dedicată Informatică. Sperăm că informațiile disponibile v-au fost utile. Dacă aveți întrebări suplimentare sau aveți nevoie de sprijin, nu ezitați să ne contactați. Vă așteptăm cu drag și data viitoare! Nu uitați să adăugați site-ul nostru la favorite pentru acces rapid.


Wix Learning: Alte intrebari