suma potegi
Ostatnio zmodyfikowano 2011-01-30 16:48
czasas Temat założony przez niniejszego użytkownika |
suma potegi » 2011-01-29 18:23:32 Witam mam pytanie chciałbym sumować potegi dwojki, jak tego dokonać ? mam taki kod jak narazie:
#include <iostream>
using namespace std;
int potega( int a, int potega ) { int wynik = 1; for( int i = 0; i < potega; i++ ) wynik = wynik * a; return wynik; } int main() { int suma = 0; int pot; for( int i = 0; i <= 3; i++ ) { pot = potega( 2, i ); } suma = suma + pot; cout << suma; system( "PAUSE" ); return EXIT_SUCCESS; }
|
|
DejaVu |
» 2011-01-29 18:37:06
Tą linię wstaw również do pętli. |
|
czasas Temat założony przez niniejszego użytkownika |
» 2011-01-29 18:44:58 ale wtedy wyjdzie 23 a chyba powinno byc 15 (1+2+4+8) |
|
kamillo121 |
» 2011-01-29 18:53:04 Twój komputer chyba nie był na lekcji matematyki, u mnie działa i wypluwa 15 oczywiście uwzględniając uwagi DejaVu ;)
//zapewne zostawiłeś tą linijkę poniżej pętli i na koniec do 15 dodało jeszcze 8 |
|
czasas Temat założony przez niniejszego użytkownika |
» 2011-01-29 18:57:57 juz ok usunąłem suma=suma+pot za pętlą |
|
ison |
» 2011-01-29 19:21:59 @czasas Twój program ma kiepską złożoność (bez sensu za każdym razem liczysz nową potęgę) (chociaż złożoność w tym przypadku dużo nie zmienia, gdyż i tak już dla niewielkich liczb kończy się zakres inta) szybsze rozwiązanie: #include <cstdio>
int main() { const int val = 3; int suma = 0; for( int tmp = 1, i = 0; i <= val; ++i, tmp *= 2 ) { suma += tmp; } printf( "%d\n", suma ); }
|
|
Vercevales |
» 2011-01-30 14:11:56 Nie lepiej użyć ciągu matematycznego? Jeśli dobrze rozumiem chodzi o ciąg geometryczny :)
Sn = a1 * (1 - q^n)/(1 - q)
gdzie a1, to pierwszy wyraz ciągu, n to liczba wyrazów, które chcesz zsumować, a q to iloraz ciągu. Jeżeli dobrze rozumiem w twoim wypadku a1 = 2 i q = 2. |
|
DejaVu |
» 2011-01-30 16:48:29 Najlepiej dać mu ćwiczyć programowanie, a nie stosować optymalne rozwiązania. |
|
« 1 » |