Proszę o pomoc w napisaniu programu!

Odpowiedz Nowy wątek
2011-10-23 10:14
0

Witam!

Chce napisać program obliczający wartość funkcji podanej wzorem:

http://imageshack.us/photo/my-images/809/program1u.jpg/

Czy mógłby mi ktoś objasnić o co tu w tym chodzi?

To jest suma uogólniona przez iloczyn skonczony?

I z tego co tu rozszyfrowalem to aby obliczyć sumę musze wczytać z klawiatury n oraz x a następnie obliczyć sume szeregu:

s1 = (2ix)

s2 = s1 + s2 => (2ix)+(2ix)? itd?

Tylko we wzorze jest i =0 wiec bede mnozyl 20x????? iz mnozenia i tak wyjdzie 0 więc czy to ma sens?

Podobnie chyba jest z iloczynem tylko ze tutaj musze pobrac m i tez x i policze sobie to x1 x2 x3 +... + xn?

No i coś tutaj zacząłem Tworzyć: ( wiem ,że pewnie tu mam pełno bzdur i błędów za co przepraszam bo się dopiero ucze)

 #include <iostream>
#include <cstdlib>
#include <cstdio>
#include <conio.h>
#include <stdlib.h>
#include <iomanip>
#include <math.h>

using namespace std;

int suma(int n, int i)
{
    int suma, s1, s2, s3;
    suma = 0;
    i = 0;

    s1 = (2 * i * x);

    for(i=0; i<=n; i++)
    {
        suma = s1;
        s2 = s1 +s2;    
    }
    cout << suma << endl;

}

int iloczyn(int m, int x)
{
    int iloczyn;
    iloczyn = 0;
    i = 1;

}

int main()
{
    int funkcja, n, m, x;

    cout << "Program obliczajacy wartosc funkcji f(x) podanej wzorem" << endl << endl;

    cout << "Podaj wartosc n: " << endl;
    cin >> n;
    cout << "Podaj wartosc m: " << endl;
    cin >> m;
    cout << "Podaj wartosc x: " << endl;
    cin >> x;

    funkcja = (suma()/iloczyn());
    cout << "Wartosc szukanej funkcji to: " << funkcja << endl;

system("PAUSE");
}

I czy moge do zmiennej funkcja przypisać iloraz 2 funkcji?

funkcja = suma() / iloczyn()?

Bardzo proszę o pomoc! Jak to ugryźć?

Pozdrawiam


Pozostało 580 znaków

2011-10-23 10:28
0

W liczniku masz obliczyć sumę 2xi dla i od 0 do n. Przykład:
n=3, wtedy:
2x0+2x1+2x2+2x3
Robisz pętlę for i dodajesz.
W mianowniku m razy mnożysz przez siebie x, czyli masz x^m. Możesz obliczyć używając:


#include <math.h>
...
pow(x, m);

PS. Tak mi się wydaje...


Pozostało 580 znaków

2011-10-23 10:35
0

Aaaaaaa dobrze mówisz z tą sumą ;]

Tak to ma być bo mi tu coś nie pasowało :)

Z iloczynem będzie pewnie tak samo np dla m =3 i dla x = 2 to 222?

A w tej pętli jak to zrobić żeby mi to sumowało?

Chyba daruje sobie te funkcje i napisze to wszystko w 1 bloku


Pozostało 580 znaków

2011-10-23 10:44
0

Zrobilem teraz coś takiego ale zle mi to liczy:/

 #include <iostream>
#include <cstdlib>
#include <cstdio>
#include <conio.h>
#include <stdlib.h>
#include <iomanip>
#include <math.h>

using namespace std;

int main()
{
    int funkcja, suma, iloczyn, n, m, x, i;

    cout << "Program obliczajacy wartosc funkcji f(x) podanej wzorem" << endl << endl;

    funkcja = 0;
    suma = 0;
    iloczyn = 0;

    cout << "Podaj wartosc n: " << endl;
    cin >> n;

    cout << "Podaj wartosc x: " << endl;
    cin >> x;

    for (i=0; i<=n; i++)
    {
        suma = 2*i*x;
        suma = suma +i;

    }

    cout << "Wartosc sumy wynosi = " << suma << endl;

    cout << "Podaj wartosc m: " << endl;
    cin >> m;

    for (i=1; i<=m; i++)
    {
        iloczyn = iloczyn*x;

    }

    cout << "Wartość iloczynu wynosi = " << iloczyn << endl;

    funkcja = (suma/iloczyn);

    cout << "Wartosc szukanej funkcji to: " << funkcja << endl;

system("PAUSE");
}

Co robie zle?


edytowany 1x, ostatnio: Odyn, 2011-10-23 10:45

Pozostało 580 znaków

2011-10-23 10:46
0
#include <iostream>
int SUMA(int m, int x)
{
int suma=0;
for (int i=0; i!=m+1; i++)
{
suma=suma+2*x*i;
}
return suma;
}
using namespace std;
int main() {
int jedna, druga;
cin >> jedna;
cin >> druga;
cout << SUMA(jedna, druga);
} 

Dodaj powa z biblioteki math.h (lub cmath, ale cmath i tak korzysta z math.h) i podziel jedno przez drugie.

EDIT:

suma = 2*i*x;
suma = suma +i;

Co to jest? Pomyśl chwilę nad tym. Za każdym razem kasujesz wynik. I nie mnóż tam na chama wszystkiego, użyj powa (z tego co pamiętam on potęguje inteligentnie) albo napisz sobie potęgowanie binarne.

PS. I weź tyle bibliotek nie wczytuj, skoro nawet nie wiesz, po co ci one.


edytowany 2x, ostatnio: merlinnot, 2011-10-23 10:52

Pozostało 580 znaków

2011-10-23 11:05
0

O coś takiego chodziło?

 #include <iostream>
#include <cstdlib>
#include <math.h>

using namespace std;

int SUMA(int n, int x)
{
    int suma =0;

    for (int i=0; i!=n+1; i++)
    {
        suma=suma+2*x*i;
        }
        return suma;

}

int ILOCZYN(int m, int x)
{
    int iloczyn =0;

    for (int i=1; i!=m+1; i++)
    {
        iloczyn = pow(x, m);
        }
        return iloczyn;

    }

int main()
{
    int liczban, liczbax, liczbam;

    cout << "Podaj wartosc n oraz x: " << endl;
    cin >> liczban >> liczbax;

    cout << "Suma to: " << SUMA(liczban, liczbax) << endl << endl;

    cout << "Podaj wartosc m: " << endl;
    cin >> liczbam;

    cout << "Iloczyn to : " << ILOCZYN(liczbam, liczbax) << endl;

system("PAUSE");
}

Tylko te sumę chyba źle liczy =/


edytowany 2x, ostatnio: Odyn, 2011-10-23 11:09

Pozostało 580 znaków

2011-10-23 11:11
0
 int ILOCZYN(int m, int x)
{
        int iloczyn =0;
        iloczyn = pow(x, m);
        return iloczyn;
}

Koniec. Pomnożyć x m razy przez siebie to podnieść x do potęgi m (x^m). Funkcja

pow(x, m) 

Podniesie ci x do potęgi m, nie musisz tego wyliczać m razy, wystarczy raz.

PS. Dla jakich wartości ci nie działa? Nie chce mi się liczyć :)


edytowany 2x, ostatnio: merlinnot, 2011-10-23 11:15

Pozostało 580 znaków

2011-10-23 11:17
0

W ten sposób?

int ILOCZYN(int m, int x)
{
int iloczyn =0;

pow (x,m);

return iloczyn;

}

Pozostało 580 znaków

2011-10-23 11:19
0

No np wpisuje n = 3 i x = 2 ;D czyli ma być 202 + 2 1 2 + 222 czyli wychodzi 0 + 4 + 8 czyli 12 a mi na wyjście wywala 24 D:

Sorry ,że tak drążę temat ale cieżko mi pojąć tutaj niektóre rzeczy i sposoby rozumowania w programowaniu =/

Hehe a iloczyn przy argumentach m =2 i x =2 wychodzi 0 czyli tez coś nie pasuje ;D


edytowany 2x, ostatnio: Odyn, 2011-10-23 11:25

Pozostało 580 znaków

2011-10-23 11:26
0
Odyn napisał(a)

iloczyn = 0;
Tu miałeś problem przy wcześniejszym liczeniu iloczynu
0 = 0 * x;
iloczyn = 1; załatwiłby sprawę

@up, a gdzie przypisujesz wartość obliczonej potęgi?

int iloczyn(double x, double m) // do funkcji pow przesyła się wartości double
{
     int iloczyn = pow(x, m);
     return iloczyn;
}
// lub bez biblioteki cmath
int iloczyn(int x, int m)
{
     int iloczyn = 1;
     for(int i = 0; i < m; ++i)
          iloczyn *= x;

     return iloczyn;
}

Gdy się nie wie, co się robi, to dzieją się takie rzeczy, że się nie wie, co się dzieje ;-)

Pozostało 580 znaków

2011-10-23 11:28
0
#include <iostream>
int SUMA(int m, int x)
{
int suma=0;
for (int i=0; i!=m; i++)
     suma=suma+2*x*i;
return suma;
}

Już powinno być dobrze. Tego powa źle używasz, jakaś zmienna musi być równa tej potędze: co ci to da, jeżeli obliczysz x^m, jeżeli nigdzie tego nie zapiszesz? Musisz napisać, że potega=pow(x, m) i wypisać (potega). Błędy w zapisie potęgi są celowe, żebyś nie zapisał w kodzie polskich liter diakrytyzowanych.

@MJay: Do funkcji pow trzeba przesyłać double w C, w C++ można także inne (int, float...)


edytowany 1x, ostatnio: merlinnot, 2011-10-23 11:31

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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