zadanie z przedziałem liczb całkowitych i sprawdzanie z dziedziną POMOCY

0

witam,
potrzebuje sprawdzic ktora liczba calkowita z zadanego przez uzytkownika przedzialu nalezy do dziedziny wyrażenia
(x-y^3)/((x+1)^3-sqrt(y-3))
utknąłem ,z góry przepraszam za niesformatowanie kodu

#include <iostream>
#include <math.h>
using namespace std;


int main()
{
cout<<"wyrazenie: (x-y^3)/((x+1)^3-sqrt(y-3))";
cout<<"musisz podac zakres dla x"<<endl;
int m,n,o,p; //zakresy
int x,y; //zmienne
cin>>m;
cin>>n;
cout<<"teraz dla y";
cin>>o;
cin>>p;
double wynik;
for (int i=m;i<=n;i++){
    x=m ;
    y=o;
    for (int j=o;j<=p;j++)
    { 
        if ((x>=m || x<=p) && (y>=o || y <= p))
        {
            if( y>=3 && (sqrt(y-3)!=pow(x+1,3))){    
            float w1=x-pow(y,3);
            float w2=pow((x+1),3)-sqrt(y-3);
            wynik=w1/w2;
            }
        }
        else
        {
            cout<<"brak pierwiastkow w dziedzinie dla x="<<x<<"i y rownego "<<y<<endl;
        }
    }          
}

cout<<"wynik to "<<wynik<<endl;
return 0;
}
3

Z matematyki ze szkoły średniej możesz pamiętać, że w dziedzinie będą wszystkie liczby, które nie sprawią, że mianownik będzie zerem, a także pierwiastek w dziedzinie liczb całkowitych nie może być ujemny. Jeżeli wydajność nie jestem problemem to po prostu sprawdź dla każdej kombinacji x,y z podanego zakresu czy nie zerują mianownika.

Jak chcesz by było sprytniej to przekształć mianownik i zobacz jaka jest relacja x do y. Wtedy wystarczy sprawdzić tylko jedną z liczb, a drugą wyliczyć.

3

Nie rozumiem: czego to ma uczyć z informatycznego punktu widzenia?
Wygląda na ciężko wypocone zadanie, które ma zmusić do użycia jakiejś funkcjonalności języka.
@MX Thomasso Możesz podać w jakim kontekście dostałeś te zadanie, w sensie co było wtedy na wykładach/lekcjach, co by nas nakierowało co autor miał na myśli/w planie. Czy to było coś w stylu NaN?

offtopic: Nie należy używać pow do obliczania całkowitych potęg.

Dziel kod na funkcje, czy tak nie byłoby lepiej:

double f(double x, double y) {
    // (x-y^3)/((x+1)^3-sqrt(y-3))
    return (x - y*y*y)/((x+1)*(x+1)*(x+1) - sqrt(y - 3));
}
1

Przed rozpoczęciem pisania "brutal force" może warto chwile się zastanowić nad analityką.
Z tego fragmentu: sqrt(y-3) wynika że y-3>=0 a więc y>=3
Natomiast z tego fragmentu: /((x+1)^3-sqrt(y-3)) wynika że (x+1)^3-sqrt(y-3)!=0 w więc (x+1)^3!=sqrt(y-3) ...
a z tego (x+1)^6!=sqrt(y-3)^2 dalej (x+1)^6!=y-3 czyli y!=(x+1)^6+3

1 użytkowników online, w tym zalogowanych: 0, gości: 1