Возведение числа в степень

Уровень сложности:

Возвести, введенное с клавиатуры число, в степень n, степень тоже вводится с клавиатуры. Возведение в степень организовать с использованием циклов.

Примечание: не использовать функцию pow для нахождения степени. Результат работы программы показан на рисунке 1. Подсказка — используйте циклы, в частности — цикл for.

CppStudio.com

Enter number:
2
Enter power: 10
number = 1024

Рисунок 1 — Возведение числа в степень

// pow.cpp: определяет точку входа для консольного приложения.

#include "stdafx.h"
#include <iostream>
using namespace std;

int main(int argc, char* argv[])
{
    cout << "Enter number: " << endl; // введите число
    int numb; // число возводимое в степень
    cin >> numb;
    cout << "Enter power: "; // введите степень
    int power;
    cin >> power;
    int count = 1; // переменная отвечающая за истинность условия цикла do while
    int power_numb = numb; // результат возведения числа в степень
    do
    {
        if (power == 0)
            power_numb = 1;
        else
            if (power != 1 && power > 0)
                power_numb = power_numb * numb; // возводим в степень
        count++; // инкремент переменной-счётчика
    } while ( power > count); // проверка условия цикла do while
    cout << "number = " << power_numb << endl; // печать возведённого числа в степень
    system("pause");
    return 0;
}

Предлагаю вам иное решение задачи возведения в степень. Огромное спасибо автору этого решения, кстати, — это пользователь нашего сайта platin. Итак, код программы смотрим ниже:

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

int main(){
        setlocale (LC_ALL, "RUS");
        int a, n, rezult=1, i;
        cout<< "Введите возводимое в степень число: ";
        cin>>a;
        cout<< endl<< "Введите стень числа: ";
        cin>>n;
        for(i=0; i<n; i++)
                rezult *=a;
        cout<< endl<< "Результата возведения в степень "<<n<< " числа "<< a<< " = "<<rezult<< endl;
        return 0;
}

Могу сказать, что данный исходник немного меньше предыдущего, возведение в степень выполняется тоже через цикл, но, цикл for. Возможно не хватает парочки проверок, но в целом решение правильное.

Добавил очередное решение задачи возведения числа в степень, которое предоставил нам — Алексей Нестерчук. Код программы показан ниже:

#include <iostream>
using namespace std;

int main()
{
    int a, b, z;
    cout<< "Chislo: "<<endl;
    cin>>a;
    z = a;
    cout<<" Stepen: "<<endl;
    cin>>b;
    cout<<"--------"<<endl;

    for (int i = 1; i<b; i++ ){
        a = a * z;
        cout<<a<<endl;
    }
cin.get();
}

Пример работы последнего исходника. Особенность этого исходника в том, что возведение в степень отображается пошагово, это хорошо видно из примера. Поблагодарим Алексея Нестерчука за данный исходник.

CppStudio.com
Chislo: 
2
 Stepen: 
10
--------
4
8
16
32
64
128
256
512
1024
Следующие статьи помогут вам в решении данной задачи:
Автор: admin
Дата: 11.09.2012
Поделиться:

Комментарии

  1. Сергей Цысь

    Немного исправил

    #include <iostream>
    #include <cmath>
    #include <cstdlib>
    #include <string>
    
    using namespace std;
    
    double input (string text, double digital, bool good1);//функция ввода и проверки 
    
    int main ()
    {
    	setlocale (LC_ALL,"rus");
    	
    	double number(0), result(1); //число и результат
        int  power(0);  //показатель степени
    	
    	string text_number("Введите число - "),
    		   text_power("Введите степень - "); 
    
    	bool good = true;
    
    
    	cout << "\t\tВозведение числа в степень\n\n";
    
    	number = input(text_number,number,good); // ввод и проверка числа
    	
    
    	power =  input(text_power,power,good); // ввод и проверка вводимого показателя степени
    	
    		if (number == 0){//вводимое число равно 0
    		cout << number   << " ^ " << power << " = "  << " 0 " << endl; 
    		exit(1); //завершение программы
    		}
    	
    	for (int i = 0; i < abs(power); i++) //вычисление степени
    			result *= number;
    		
    	cout << endl;
    
    	if(power >= 0)
    		cout << number   << " ^ " << power << " = "  << result << endl; //значение степени положительное
    	
    	else
    		cout << number   << " ^ " << power << " = "  << 1/result << endl; // значение степени отрицательное
    	
    return 0;
    }
    
    double input (string text, double digital, bool good1)
    {
    
    		do{
    	
    				cout << text;
    				cin >> digital;
    
    			if (! (good1 = cin.good())) // защита от вводов символов
    				cout << "Не число. Попробуйте еще раз \n\n";
    		
    			cin.clear ();
    
    			cin.ignore( numeric_limits<streamsize>::max() , '\n') ;
    
    	
    		} while( !good1);
    	
    		return digital;
    
    		
    		cout << endl;
    
    
    }

     

  2. Сергей Цысь

    #include <iostream>
    #include <cmath>
    #include <cstdlib>
    #include <string>
    
    using namespace std;
    
    double input (string text, double digital, bool good1);//функция ввода и проверки 
    
    int main ()
    {
    	setlocale (LC_ALL,"rus");
    	
    	double number(0), result(1); //число и результат
        int  power(0);  //показатель степени
    	
    	string text_number("Введите число - "),
    		   text_power("Введите степень - "); 
    
    	bool good = true;
    
    
    	cout << "\t\tВозведение числа в степень\n\n";
    
    	number = input(text_number,number,good); // ввод и проверка числа
    	
    	if (number == 0){//вводимое число равно 0
    		cout << number   << " ^ " << power << " = "  << " 0 " << endl; 
    		exit(1); //завершение программы
    		}
    	
    	power =  input(text_power,power,good); // ввод и проверка вводимого показателя степени
    		
    	for (int i = 0; i < abs(power); i++) //вычисление степени
    			result *= number;
    		
    	cout << endl;
    
    	if(power >= 0)
    		cout << number   << " ^ " << power << " = "  << result << endl; //значение степени положительное
    	
    	else
    		cout << number   << " ^ " << power << " = "  << 1/result << endl; // значение степени отрицательное
    	
    return 0;
    }
    
    double input (string text, double digital, bool good1)
    {
    
    		do{
    	
    				cout << text;
    				cin >> digital;
    
    			if (! (good1 = cin.good())) // защита от вводов символов
    				cout << "Не число. Попробуйте еще раз \n\n";
    		
    			cin.clear ();
    
    			cin.ignore( numeric_limits<streamsize>::max() , '\n') ;
    
    	
    		} while( !good1);
    	
    		return digital;
    
    		
    		cout << endl;
    
    
    }

Оставить комментарий

Вы должны войти, чтобы оставить комментарий.