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

5. Scrieți doar antetul unui subprogram care:
a) Afișează numerele pătrate perfecte mai mici sau egale cu un
b) Afișează mesajul Bisect sau Nebisect dacă anul primit ca parametru este sau nu bisect.
c) Determină, în parametri de ieșire, perimetrul și aria unui cerc de rază r primită ca parametru.
d) Determină primul număr prim mai mare ca valoarea n primită ca parametru.
Salut! Va rog mult sa ma ajutați la acest exercitiu.


NoxNostraEst: Banuiesc ca trebuie 4 subprograme. La a e "mai mici sau egale cu un numar dat"? sau ceva similar?
dinesculidia: da
dinesculidia: a) Afișează numerele pătrate perfecte mai mici sau egale cu un număr întreg n.
dinesculidia: Scuze , acum am vazut ca nu s-a copiat cum trebuie
NoxNostraEst: Perfect! Asa am rezolvat. Stai linistita, nu e nimic! Daca ai intrebari, lasa-le mai jos
dinesculidia: ok

Răspunsuri la întrebare

Răspuns de NoxNostraEst
0

a) int patrate (unsigned int n)

{

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

   cout << i * i << " ";

   return 0;

}

Obs: sper ca asta era cerinta. Am scris comentariu ca sa ma asigur.

b) int AnBisect (unsigned int a)

{

   if (a % 4 == 0 && a % 100 != 0)

    cout << "Bisect";

   else

    cout << "Nebisect";

   

   return 0;

}

Obs: "unsigned int" este un 'int' doar ca e folosit exclusiv pentru numere naturale. Daca crezi ca nu o sa-i convina profesorului sau profesoarei, foloseste 'int' simplu.

c) int cerc (unsigned int r)

{

   cout << "Perimetrul cercului este: " << 2*3.14*r << '\n';

   cout << "Aria cercului este: " << 3.14*r*r;

   

   return 0;

}

d)  

int nrPrim (unsigned int n)

{

  int i, k = 0;

 

  while (true)

  {

      n++;

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

       if (n % i == 0)

        k++;

   

      if (k == 2)

       break;

      k = 0;

  }

   

   cout << n;

   return 0;

}


NoxNostraEst: '\n', la rezolvarea subpunctului b, este echivalentul la 'endl', doar ca e mai pompos. Daca te intreaba de ce ai folosit asta, spui ca ajuta la cresterea performantei programului. Adica il face un pic mai eficient.
dinesculidia: Mersi
NoxNostraEst: A da, iar 'break' la subpunctul d, opreste functia 'while'. 'while (true)' ar fi o functie care se repeta la infinit, dar bineinteles ca nu se doreste asta. Iar in momentul in care, prin intermediul functiei, se gaseste acel numar prim, trebuie sa o oprim. Astfel, in programul nostru, prin k se numara divizorii unui numar. Cand se gaseste un numar mai mare ca si n, cu un numar de fix 2 divizori, atunci oprim functia while si trecem la afisare.
Alte întrebări interesante