Pomoc w zadaniu

RE
  • Rejestracja:około 9 lat
  • Ostatnio:około 5 lat
  • Postów:6
0

Witam czy mógłby mi ktoś pomóc i wyjawić schamat jak robić tego typu zadania za pomocą pętli for? co znaczyu ten znak pi?

http://zapodaj.net/39c45330993a4.png.html

_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:3 miesiące
0

... to iloczyn, czego konkretnie nie rozumiesz?


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
RE
  • Rejestracja:około 9 lat
  • Ostatnio:około 5 lat
  • Postów:6
0

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
int m;
int n;
double liczba;
double suma=0;

cout<<"Podaj m: ";
cin>>m;
cout<<"Podaj n: ";
cin>>n;

for(int i=pow(m,2);i<=n; ++i)
{
    double liczba=(i-3)/(4*i-1);
    suma*=liczba;
}
cout<<suma;

}

Napisałem taki kod, ale wyświtla 0 za każdym razem.

KM
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 4 lata
  • Postów:473
0

double liczba; Po co skoro w pętli for deklarujesz tą zmienną jeszcze raz

(i-3)/(4*i-1) wychodzi ci zero jeśli i jest typu int bo wtedy zaokrągla wynik w dół; rozwiązanie: castuj dzielną lub dzielnik do double, poczytaj o static_cast; natomiast nie deklaruj i jako double

EDIT!!!

suma*=liczba; na pewno *=?

edytowany 2x, ostatnio: kmph
RE
  • Rejestracja:około 9 lat
  • Ostatnio:około 5 lat
  • Postów:6
0

Czy mógłbyś mi napisać ten kod, bez używania static_cast? Byłbym bardzo wdzięczny. Potrzebuje to ogarnąć na sprawdzian który mam jutro.

KM
bez używania static_cast Dlaczego?
_13th_Dragon
@kmph - bo masturbacje nie są mile widziane.
KM
@_13th_Dragon Jak kto woli. Dla mnie static_cast czytelniejszy niż dywagacje p.t. Aha, tam gdzieś w formule jest 4.0 czyli że niby to wszystko ma stać się zmiennoprzecinkowe. Może nie mam racji.
_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:3 miesiące
0
Kopiuj
#include <iostream>
#include <cmath>
using namespace std;

int main()
  {
   int m,n;
   double suma=1;

   cout<<"Podaj m: ";
   cin>>m;
   cout<<"Podaj n: ";
   cin>>n;
   for(int i=m*m;i<=n;++i) suma*=(i-3)/(4.0*i-1);
   cout<<3*suma;
   return 0;
  }

pow(b,e) przeważnie obliczane jako exp(e*ln(b)) - więc o ile wykładnik nie jest ułamkowy - nie ma sensu używać.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 2x, ostatnio: _13th_Dragon
Cornellia
suma na początku jest zerem, więc zawsze wyjdzie ci zero ;P
_13th_Dragon
racja, skopiowałem nie patrząc.
Cornellia
późna pora, wybaczam :)
RE
  • Rejestracja:około 9 lat
  • Ostatnio:około 5 lat
  • Postów:6
0

@_13th_Dragon Twój kod również zwraca 0 za każdym razem :/

edytowany 1x, ostatnio: rethin
Cornellia
  • Rejestracja:około 9 lat
  • Ostatnio:około 9 lat
  • Postów:39
2
Kopiuj
#include <iostream>
using namespace std;

int main() {
	int n,m,mq;
	float result = 1;
	cin >> n >> m;
	mq = m*m;
	for (int i=m*m; i<n; i++){
		result*=(float)(i - 3)/(4*i -1 );
	}		
	result*=3;
	cout <<"Wynk:"<<result;	


	return 0;
}
edytowany 4x, ostatnio: Cornellia
szweszwe
Natomiast Tobie zawsze (albo prawie) zwróci 3 :)
Cornellia
Możesz wstawić warunek że m*m < n
KM
@szweszwe Ale to chyba dobrze, bo jeśli m*m > n to zdaje się wg. definicji iloczyn ma wyjść 1?
szweszwe
Tak, jest dobrze, to ja bredzę :)
szweszwe
Raczej zmień kolejność wczytywania, będzie bardziej intuicyjnie :)
RE
  • Rejestracja:około 9 lat
  • Ostatnio:około 5 lat
  • Postów:6
0

Rzeczywiści zwraca 3 w większości :/

Cornellia
zedytowałam... n musi być większe od m*m bo inaczej to jest bezsensu.
KM
Zapoznaj się z definicją iloczynu, tak ma być jeśli się nie mylę: https://pl.wikipedia.org/wiki/Mno%C5%BCenie#Iloczyn_sko.C5.84czonej_liczby_czynnik.C3.B3w
KM
@Cornellia nie jest bez sensu, było dobrze jak było wcześniej. Definicja iloczynu.
Cornellia
Faktycznie, dzieki :P
RE
  • Rejestracja:około 9 lat
  • Ostatnio:około 5 lat
  • Postów:6
0

Dzięki, dobzi ludzie. :D

Cornellia
To zaakcjeptuj odpowiedź
szweszwe
I ostatnia pomoc - 'dobrzy' nie 'dobzi'.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.