Proszę o pomoc w napisaniu programu!

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

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...

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

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?

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.

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 =/

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ć :)

0

W ten sposób?

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

pow (x,m);

return iloczyn;
	
}
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

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;
}
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...)

0

Jest :) suma działa juz dobrze.

Zaraz postaram sie poprawic ILOCZYN :)

Tak to zrobilem

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

iloczyn = pow (x,m);

return iloczyn;
	
}
0

Już wszystko działa OK ! Tak mi sie wydaje przynajmniej ;D

 #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; i++)
	{
		suma=suma+2*x*i;
		}
		return suma;


}

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





int main()
{
	int liczban, liczbax, liczbam, funkcja;
	
	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;

	funkcja = SUMA(liczban, liczbax)/ILOCZYN(liczbam, liczbax);
	
	cout << "Wartosc f(x) wynosi = " << funkcja << endl;




system("PAUSE");
}

Na koncu dodalem jeszcze zmienna funkcja bo tam musiałem jeszcze sume przez iloczyn podzielic ;)

Bardzo dziękuję za pomoc ;)

Naniosłem jeszcze drobne poprawki :

 #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; i++)
	{
		suma=suma+2*x*i;
		}
		return suma;


}

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





int main()
{
	int liczban, liczbax, liczbam;
	float ilo, sum;
	long double funkcja;
	
	cout << "Podaj wartosc n: " << endl;
	cin >> liczban;
	
	cout << "Podaj wartosc x: " << endl;
	cin >> liczbax;
	
	cout << "Suma to: " << SUMA(liczban, liczbax) << endl << endl;
	sum = SUMA(liczban, liczbax);
	
	cout << "Podaj wartosc m: " << endl;
	cin >> liczbam;
	
	cout << "Iloczyn to : " << ILOCZYN(liczbam, liczbax) << endl;
	ilo = ILOCZYN(liczbam, liczbax);
	
	funkcja = sum/ilo;
	
	cout << "Wartosc f(x) wynosi = " << funkcja << endl;




system("PAUSE");
}

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