Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

suma potegi

Ostatnio zmodyfikowano 2011-01-30 16:48
Autor Wiadomość
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:

C/C++
#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;
}
P-27436
DejaVu
» 2011-01-29 18:37:06
C/C++
suma = suma + pot;
Tą linię wstaw również do pętli.
P-27438
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)
P-27443
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
P-27446
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ą
P-27447
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:
C/C++
#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 );
}
P-27450
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.
P-27489
DejaVu
» 2011-01-30 16:48:29
Najlepiej dać mu ćwiczyć programowanie, a nie stosować optymalne rozwiązania.
P-27527
« 1 »
  Strona 1 z 1