Cred ca poti sa o rezolvi destul de simplu cu cmath.h cu functia pow().
Radacina n a unui numar x se poate scrie ca pow(x, (1.0 / n)) adica x la puterea 1 supra n.
Deci o sa ai ceva de genul result = (pow(pow(x, 4) - pow(x, 6), (1.0 / 4.0)) si in rest decat iterezi si aplici formula pentru fiecare numar din interval.
x la a 4-a minus x la a 6-a este intotdeauna pozitiv deci problema are sens.
Last edited by alex707; 18-05-2012 at 19:12.
Success is not final, failure is not fatal: it is the courage to continue that counts. --Sir Winston Churchill
incercai s-o rezolv cu indicatiile pe care mi le-ai dat,dar tot nu-mi iasa.
Ce nu-ti iese? Pune cod.
Success is not final, failure is not fatal: it is the courage to continue that counts. --Sir Winston Churchill
#include<iostream>
using namespace std;
#include<cmath>
void main(){
int x,f;
float result,pow;
cout<<"x="<<endl;
cin>>x;
{
f=pow(x,(1.0 / 4))-pow(x, (1.0 / 6));
result=(pow(pow(x, 4) - pow(x, 6), (1.0 / 4));
}
return f;}
stiu ca e o harababura totala ce scrisai,dar pana acum am scris doar probleme rezolvate si n-am scris niciuna cu radicali
- result este ok ... de ce dai return f (return din main iti iese din program ... trebuie sa faci cout)? f este radical de ordinul 4 din x minus radical de ordinul 6 din x.
Partea a doua:
- radical de ordin par dintr-un numar negativ nu are logica. De-asta ti-am zis ca asa cum e formulata problema are logica dar doar in intervalul -1, 1 (inclusiv).
Asa cum ai scris tu, cu x fiind int (deci un numar intreg), x la a 4-a minus x la a 6-a este intotdeauna negativ sau 0. Deci nu pot face radical de ordin par din el.
In intervalul -1, 1 functioneaza pentru ca x la a 4-a este mai mare decat x la a 6-a, deci doar pentru x subunitar.
In primul rand transforma x in float.
In al doilea rand aplica un x intre -1 si 1, adica 0.5, 0.3, -0.000123 (numai subunitare negative sau pozitive) la formula din result, nu la f.
Si partea a treia:
- eu am scris 1.0 / 4 ca sa intelegi conceptul. Poti sa scrii 0.25 in loc de 1.0/4: adica x la puterea 0.25 este egal cu radical de ordinul 4 din x (asa e mai clar?)
Last edited by alex707; 18-05-2012 at 21:51.
Success is not final, failure is not fatal: it is the courage to continue that counts. --Sir Winston Churchill
mai modificai prin ea dar nu-mi seama ce vrei sa zici cu subunitarele alea.ma cam bate programarea asta,avand in vedere ca fac de nici 3 luni asa ceva
#include<iostream>
using namespace std;
#include<cmath>
void main(){
int f;
float x,result,pow,sqrt;
f=(sqrt(x,4)-(x,6)(0.25));
result=(pow(pow(x,4)-pow(x,6),(0.25));
return ;}
Tine de matematica mai mult, decat de programare. Hai sa o luam altfel:
Sa luam nr 0.5 de ex:
0.5 la a 4-a este: 0.0625 (sa-l numim pe asta a)
0.5 la a 6-a este: 0.015625 (si pe asta b)
a - b = 0.046875 (deci un numar pozitiv pentru ca a > b intotdeauna, pentru numere intre -1 si 1)
Daca faci acelasi lucru cu 3 de exemplu:
3 la a 4-a este: 81 (tot a)
3 la a 6-a este: 729 (tot b)
a - b = - 648 (intotdeauna va fi negativ pentru ca a < b intotdeauna, pentru numere mai mari ca 1 si mai mici ca -1)
Acelasi lucru se intampla pentru numere negative, pentru ca ridicate la o putere para vor fi pozitive si revii la aceeasi problema de mai sus. -2 la patrat este 4 si -0.3 la patrat este 0.09
Nu stiu in ce clasa esti, dar intr-a 7-a se fac radicalii si ar fi trebuit sa-ti spuna cineva ca radical de ordin par dintr-un numar negativ nu exista. De ce? Pentru ca nu exista numar negativ care ridicat la o putere para sa iti dea tot un numar negativ. Si cum radicalul este inversul puterii radical dintr-un numar negativ nu exista (de fapt este imaginar). Motiv pentru care x-ul din problema ta trebuie sa fie intre -1 si 1.
Daca ti se pare greu de inteles ce am scris mai sus nu e nici o problema, probabil esti tanar si ai destul timp ca sa mai inveti matematica, dar strict pentru problema ta trebuie sa intelegi doar atat:
- x trebuie sa fie un float cuprins intre -1 si 1;
- iterezi intr-un for sau intr-un while (in intervalul de mai sus) in incremente de 0.1 (de ex. pornesti de la -1 si aduni 0.1 pana ajungi la 1);
- aplici formula pentru x (cea pe care ai scris-o la "result");
- afisezi rezultatul, dar nu cu return (return iti iese din functie);
Success is not final, failure is not fatal: it is the courage to continue that counts. --Sir Winston Churchill
sunt anul I la facultate,problema imi trebuie s-o prezint pentru a intra in examen.o sa mai analizez maine ce-mi explicasi si sper sa-i dau de cap pana la urma.mersi mult pentru ajutor.o seara buna
OMG. Ingrijorator.
Ca sa iti explic de ne nu ajungi exact la 0 si la 1 (sau chiar la -0.1) cred ca trebuie sa mai studiezi un pic.Cod:#include <iostream> #include <cmath> using namespace std; void main() { float x = -1.0; float result; while (x <= 1) { result = pow(pow(x, 4) - pow(x, 6), 0.25f); x += 0.1f; cout << "result=" << result; cout << endl; } system("PAUSE"); }
Success is not final, failure is not fatal: it is the courage to continue that counts. --Sir Winston Churchill
gimnaziul l-am terminat acum 7 ani,in liceu nu pot sa spun ca am facut matematica,desi am fost pe profil.sper pe viitor sa imbunatatesc cunostintele si sa ma descurc mai bine.pana acum am mers pe pascal,iar cand am folosit prima data c++ -ul mi s-a parut cu totul si cu totul alta mancare de peste.inca o data multumesc
Iata cateva variante:
Descarcati varianta potrivita: