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

imi poate spune cineva ce este gresit la acest cod ?

#include


#include


using namespace std;


int main()

{

int a , rez;

cin>> a ;

rez=3*(a*a+pow(a,4))/a*a+pow(a,4)+sqrt(a*a+pow(a,4))+sqrt(a*a+pow(a,4));

cout << rez;

return 0;

}

cerinta => https://www.pbinfo.ro/?pagina=probleme&id=2600


boiustef: numitorul fracţiei trebuie luat în paranteze...
CinevaFaraNume: Ordinea operatiilor...
boiustef: dar se observă că o expresie se repetă...
CinevaFaraNume: Atunci va fi optimizat la compilare
CinevaFaraNume: Functia pow e apelata o singura data
boiustef: dar ar fi mai sănătos ca pow să nu fie folosită la tipurile întregi
CinevaFaraNume: Nu face mare diferenta

Răspunsuri la întrebare

Răspuns de Rayzen
2

Nu ai pus unele paranteze.

Asa trebuia sa fie codul tau.

#include <iostream>

#include <math.h>

using namespace std;

int main()

{

int a, rez;

cin >> a ;

rez=3*(a*a+pow(a,4))/(a*a+pow(a,4)+sqrt(a*a+pow(a,4)))+sqrt(a*a+pow(a,4));

cout << rez;

return 0;

}

/// Nu ai pus paranteza aici:  a*a+pow(a,4))/(

/// Asta de langa '/' din dreapta


niorbaana: Mersii
Răspuns de boiustef
3

Răspuns:

#include <iostream>

#include <math.h>

using namespace std;

int main()

{

   int a, x, t, p;

   cin >> a;

   p=a*a; t=p+p*p;

   x=(3*t)/(t+sqrt(t))+sqrt(t);

   cout << x << endl;

   return 0;

}

Explicație:

se poate şi aşa...


Rayzen: Nu stiam ca sqrt() poate calcula un int.
Rayzen: dar vad ca merge.
Sau asta e doar in C.
Rayzen: In C nu ar merge cu int cred.
niorbaana: Multumesc
CinevaFaraNume: E convertire implicita
boiustef: evident are rezultat real, dar în problema asta avem cerinţa: "Scrieți un program care citește de la tastatură un număr natural a și care afișează partea întreagă a valorii expresiei"
CinevaFaraNume: Inainte de salvare(-12(%rbp) = x, %xmm0 = valoarea expresiei):

cvttsd2si %xmm0, %eax
movl %eax, -12(%rbp)
Alte întrebări interesante