Szybkie liczenie potęgi od lewej do prawej
Kod był wyświetlany 3945 razy.
    /*
  Name: Szybkie liczenie potęgi od lewej do prawej
  Copyright: GOL GNU
  Date: 17-04-10 13:04
  Description: 
*/

#include<iostream>
#include<conio.h>
using namespace std;

int potegowanie(int x, int n) 
        { 
        int wynik1 = 1; 
        for (int j=0; j<n; j++) 
         wynik1 = wynik1*x; 
         return wynik1; 
        }

int main()
{
	int liczba,wykladnik,wynik=1;             //zmienne kluczowe do dzialania programu
	int tab[30];                           //tablica na liczby binarne
	int i=0;                                 //zmiene do tablicy
	int liczba_kopia,wykladnik_pom=1,liczba_potega,wykladnik_kopia;
	int potega=1,i1=0;
	cout<<"Podaj liczbe ";
	cin>>liczba;
	cout<<"Podaj wykladnik ";
	cin>>wykladnik;
	if(liczba==0)                        
	{
		cout<<"Wynik to 0"<<endl;
		system("pause");
		return 0;
	}
	if(wykladnik==0)
	{
		cout<<"Wynik to 1"<<endl;
		system("pause");
		return 0;
	}
	wykladnik_kopia=wykladnik;       //zamiana wykladnika na liczby binarne
	while(wykladnik_kopia!=0)
	{
		if(wykladnik_kopia%2==0)
			tab[i]=0;
		else
			tab[i]=1;
		wykladnik_kopia/=2;
		i=i+1;
	}
    while(i1!=i)                    //g funkcja -liczenie potegi
	{
		if(tab[i1]==0)
		{ 
			i1=i1+1;
			wykladnik_pom*=2;
		    continue;
		}
		else
		{
              liczba_kopia=liczba;
              liczba_potega=potegowanie(liczba_kopia,wykladnik_pom);
              wynik*=liczba_potega;
		}
		i1++;
		wykladnik_pom*=2;
	}
	cout<<"wynik to "<<wynik<<endl;
    system("pause");
	return 0;
}
    
Pobierz plik tekstowy
Administrator WJL
PHP&SQL coded by NOVA-IT