n, степень тоже вводится с клавиатуры. Возведение в степень организовать с использованием циклов.Примечание: не использовать функцию pow для нахождения степени. Результат работы программы показан на рисунке 1. Подсказка — используйте циклы, в частности — цикл for.
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();
}
Пример работы последнего исходника. Особенность этого исходника в том, что возведение в степень отображается пошагово, это хорошо видно из примера. Поблагодарим Алексея Нестерчука за данный исходник.
Chislo: 2 Stepen: 10 -------- 4 8 16 32 64 128 256 512 1024
Комментарии
Сергей Цысь
Немного исправил
#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; }Сергей Цысь
#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; }