stigmt
@stigmt
Учусь

Вопрос по циклу for c++?

#include<iostream>
#include<conio.h>		
#include<cmath>
using namespace std;
using std::cout;
using std::endl;
using std::cin;
using std::ios_base;

int main()
{


	int a, b, r=1;
	cout << "a-chislo, b-kol-vo ciklov" << endl;

	if (!(cin >> a && cin >> b))

		cout << "error" << endl;
	else if (a < 0 && b < 0)
		cout << "error" << endl;
	else



		for (int i = 1; i <= b; i = i + 1)
			r = r*a;
		cout << "result: "<<r << endl;
		_getch();
	return 0;
}
Возведение числа в степень с помощью цикла. Методом тыка удалось сделать рабочий код. Тык был в переменную "r" и присваивание ей значения "=1", только тогда заработало. Но так до конца и не понятна логика этого выражения r=r*a, если r=1. Почему цикл идет, только в таком случае, а не например в таком r=2*a. В противном случае сразу выводится значение первого повторения, а в оригинальном я получаю степень числа со всеми повторениями. Если написать r=b*a результат будет без повторений, а r=r*a уже с повторениями по условию for. Помогите понять
  • Вопрос задан
  • 335 просмотров
Решения вопроса 1
stigmt
@stigmt Автор вопроса
Учусь
Ответ на свой вопрос нашел тут skeletoncoder.blogspot.ru/2006/09/java-tutorials-i...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Olej
@Olej
инженер, программист, преподаватель
Помогите понять

Понять это объяснение вопроса никак нельзя.

А возводить число в степень лучше так (это в порядке развлечения):
double power( double a, int n, int& m ) {
   assert( n > 0 || ( a != 0.0 || n != 0 ) );
   switch( n ) {
      case 0:
         return 1;
      case 1:
         return a;
      default : {
         double a2 = power( a, n / 2, m );
         if( n & 1 ) {
            m += 2;
            return a * a2 * a2;
         }
         else {
            m++;
            return a2 * a2;
         }
      }
   }
}

int main() {
   double e, r;
   int n, m;
   while( true ) {
      cout << "что возводить? : ";
      cin >> e;
      cout << "в какую степень? : ";
      cin >> n;
      m = 0;
      r = power( e, n, m );
      cout << e << "**" << n << "=" << r << ", число умножений " << m << endl;
   }
   return 0;
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы