Создание таблицы полномочий с C++

Я работаю над проектом, чтобы распечатать таблицу экспоненциальных чисел, используя вложенные циклы for. Пользователи указывают количество строк для печати и количество степеней. Например, если пользователь указывает 2 строки и 3 степени, программа должна напечатать 1,1,1 и 2,4,9 (2^1,2,3 и т. Д.). Я должен отметить, что это для класса, и нам не разрешено использовать cmath, в противном случае я бы использовал pow(). Кажется, я не могу найти правильную функцию во вложенном цикле for, которая может изменять как значения базы, так и экспоненты. Вот что у меня так далеко. Спасибо за вашу помощь!

#include <iostream>
#include <iomanip>
using namespace std;

int main ()
{
    int r, p, a;
    cout << "The program prints a table of exponential powers.\nEnter the number of rows to print: ";
    cin >> r;
    cout << "Enter the number of powers to print: " ;
    cin >> p;
    cout << endl;

    for (int i = 1 ; i <= r; i++)
    {
        cout << setw(2) << i;       
        for (int q = 1; q <= i; q++)
        {
            a = (q * q); //This only works for static numbers...
            cout << setw(8) << a;
        }
        cout << endl;
    }
}

2 ответа

Решение
for (int i = 1 ; i <= r; i++)
{
    cout << setw(2) << i;
    int a = 1;
    for (int q = 1; q <= r; q++)
    {
        a = (a * i);
        cout << setw(8) << a;
    }
    cout << endl;
}

Несколько вещей на заметку. Во-первых, вы можете вычислить полномочия, сохранив переменную a и умножив ее на i для каждой степени. Кроме того, я думаю, что вы хотите, чтобы верхняя граница вашего второго цикла была r, а не i.

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

Кроме того, вы используете неправильную переменную для завершения цикла во внутреннем цикле for.

#include <iostream>
#include <iomanip>
using namespace std;

int main ()
{
   int r, p, a;
   cout << "The program prints a table of exponential powers.\nEnter the number of rows to print: ";
   cin >> r;
   cout << "Enter the number of powers to print: " ;
   cin >> p;
   cout << endl;

   for (int i = 1 ; i <= r; i++)
   {
      cout << setw(2) << i;       
      a = 1;   // Start with 1
      for (int q = 1; q <= p; q++) // That needs to <= p, not <= i
      {
         a *= i; // Multiply it by i get the value of i^q
         cout << setw(8) << a;
      }
      cout << endl;
   }
}
Другие вопросы по тегам