Prosty program liczacy funkcje pomoc.

0

Witam.
Dostałem do napisania program liczący wartość funkcji. Dokładne polecenie zamieszczam w załączniku. Chciałbym żeby ktoś mi napisał czy jest dobrze i znalazł ewentualne błędy. Będę wdzięczny. Miałem małe problemy z użyciem jednocześnie modulo i pow zmienne się nie zgadzały dla jednej musi byc int dla drugiej nie moze ale usunałem pow i napisałem recznie potege x, jeżeli ktos wie jak zrobić zeby uzyc pow i jednoczesnie % to prosze o napisanie. Od razu mówie uczę sie C++ od 3 tyg prosze o wyrozumiałość :P
Oto kod:

 
#include <cstdlib>
#include <iostream>
#include <cmath>

using namespace std;

int main(int argc, char *argv[])
{
    int x;
    float y;
    printf("Wprowadz argument x potrzebny do obliczenia wartosci y\n");
    scanf("%i", &x);
    printf("x=%i\n", x);
if (x%2==0)
 {
  printf("Argument X jest parzysty\n");  
                   if ((x!=3) && (x!=(-3)))
                   {
                              printf("X rozny od 3 i -3.\n");
                              y= (x*x)/(9- (x*x));
                              printf("y=%f\n",y);
                    }  
                    else 
                    {
                              printf("X rowna sie 3, lub -3.\n");
                              y= (9- (x*x))*(4- (x*x));
                              printf("y=%f\n",y);
                    }                  
 }  
 else
 {
     printf("X nieparzysty.\n");
     if ((x!=2) && (x!=(-2)))
        {
                printf("X rozny od 2 i -2.\n");
                y= (x*x)/(4-(x*x));
                printf("y=%f\n", y);
        }  
      else
        {
                printf("X rowna sie 2, lub -2.\n");   
                y= (9- (x*x))*(4- (x*x)); 
                printf("y=%f\n",y);  
                }       
 }   
    system("PAUSE");
    return EXIT_SUCCESS;
}
0

x całkowite, nieparzyste i różne od 2i-2, jak to jest z parzystością liczb zespolonych?
Możemy badać liczby całkowita Gausa i wtedy badać na parzystość Re x + Im x, czyli Im [x*(1+i)]
O ile ładniej byłoby rozciągnąć to na liczby wymierne, gdzie jedno jest wielokrotnością odwrotności drugiego.
Ileż więcej liczb można by testować
:-)
Żartuję, by coś wskazać...

Czemu na siłę chcesz użyć pow() ? Tak jak zrobiłeś jest lepiej, być może nawet przy obliczaniu np. y= (xx)/(9- (xx)) wykonane będzie tylko jedno mnożenie.

0

Czyli zrobione jest dobrze ?? Czy nie wydaję Ci się że przypadki się wykluczają jeżeli coś jest parzyste to nigdy nie będzie 3 lub -3 , badź jeżeli coś jest nieparzyste to nigdy nie będzie 2 lub -2, i zawsze coś jest parzyste badź nie wiec trzeci przypadek nie istnieje ?

0

Z pewnością miało być odwrotnie, popatrz na dziedziny funkcji "parzystej" i "nieparzystej".

0

Program wygląda teraz tak nie wiem tylko dlaczego wyrzuca mi prawie zawsze y =1 ?

 
#include <cstdlib>
#include <iostream>
#include <cmath>

using namespace std;

int main(int argc, char *argv[])
{
    int x;
    float y;
    printf("Wprowadz argument x potrzebny do obliczenia wartosci y\n");
    scanf("%i", &x);
    printf("x=%i\n", x);
if (x%2==0)
 {
  printf("Argument X jest parzysty\n");  
                   if ((x!=2) && (x!=(-2)))
                   {
                              printf("X rozny od 2 i -2.\n");
                              y= (x*x)/(4- (x*x));
                              printf("y=%f\n",y);
                    }  
                    else 
                    {
                              printf("X rowna sie 2, lub -2.\n");
                              y= (9- (x*x))*(4- (x*x));
                              printf("y=%f\n",y);
                    }                  
 }  
 else
 {
     printf("X nieparzysty.\n");
     if ((x!=3) && (x!=(-3)))
        {
                printf("X rozny od 3 i -3.\n");
                y= (x*x)/(9-(x*x));
                printf("y=%f\n", y);
        }  
      else
        {
                printf("X rowna sie 3, lub -3.\n");   
                y= (9- (x*x))*(4- (x*x)); 
                printf("y=%f\n",y);  
                }       
 }   
    system("PAUSE");
    return EXIT_SUCCESS;
}
0

a bo:
3/4==0
natomiast
3.0/4 == 0.75

0

Czyli jak powinienem porpawić kod aby było dobrze ?

0

np.
double x2=x*x;

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