CC++Qt « Возведение в степень в С++
Народ, подскажите пожалуйста, как в С++ возведение в степень реализовать? Нужно двумерный массив получить, членами которого по "периметру"являются возведенное в степень от 0 до 10 число х.
Матрица должна получится вида:
Задачу решил следующим образом:
/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .cpp.geshi_code {font-family:monospace;} .cpp.geshi_code .imp {font-weight: bold; color: red;} .cpp.geshi_code .kw1 {color: #0000ff;} .cpp.geshi_code .kw2 {color: #0000ff;} .cpp.geshi_code .kw3 {color: #0000dd;} .cpp.geshi_code .kw4 {color: #0000ff;} .cpp.geshi_code .co1 {color: #666666;} .cpp.geshi_code .co2 {color: #339900;} .cpp.geshi_code .coMULTI {color: #ff0000; font-style: italic;} .cpp.geshi_code .es0 {color: #000099; font-weight: bold;} .cpp.geshi_code .es1 {color: #000099; font-weight: bold;} .cpp.geshi_code .es2 {color: #660099; font-weight: bold;} .cpp.geshi_code .es3 {color: #660099; font-weight: bold;} .cpp.geshi_code .es4 {color: #660099; font-weight: bold;} .cpp.geshi_code .es5 {color: #006699; font-weight: bold;} .cpp.geshi_code .br0 {color: #008000;} .cpp.geshi_code .sy0 {color: #008000;} .cpp.geshi_code .sy1 {color: #000080;} .cpp.geshi_code .sy2 {color: #000040;} .cpp.geshi_code .sy3 {color: #000040;} .cpp.geshi_code .sy4 {color: #008080;} .cpp.geshi_code .st0 {color: #FF0000;} .cpp.geshi_code .nu0 {color: #0000dd;} .cpp.geshi_code .nu6 {color: #208080;} .cpp.geshi_code .nu8 {color: #208080;} .cpp.geshi_code .nu12 {color: #208080;} .cpp.geshi_code .nu16 {color:#800080;} .cpp.geshi_code .nu17 {color:#800080;} .cpp.geshi_code .nu18 {color:#800080;} .cpp.geshi_code .nu19 {color:#800080;} .cpp.geshi_code .me1 {color: #007788;} .cpp.geshi_code .me2 {color: #007788;} .cpp.geshi_code span.xtra { display:block; }
#include<iostream.h>
#include<math.h>
int main()
{
cout << "Eta programma stroit matrix deistvitelnux chiseln"
<< "na osnove vvedennogo parametra Xn"
<< "Vvedite znachenie parametra X:";
float X;
cin >> X;
float mtrx[10][10];
int j=0, i=0, q=0;
while(q<=9&&i<=9)
{
mtrx[i][j]=pow(X,(0+q));
i++;
q++;
}
i=0, q=0;
while(q<=9&&j<=9)
{
mtrx[i][j]=pow(X,(0+q));
j++;
q++;
}
j=9, q=9, i=0;
while(q>=0&&i<=9)
{
mtrx[i][j]=pow(X,(0+q));
q--;
i++;
}
q=9,i=9,j=0;
while(q>=0&&j<=9)
{
mtrx[i][j]=pow(X,(0+q));
q--;
j++;
}
for(j=1;j<=8;j++)
{
i=1;
while(i<=8)
{
mtrx[i][j]=0;
i++;
}
}
for(j=0;j<=9;j++)
{
i=0;
while(i<=9)
{
cout<<" "<<mtrx[i][j];
i++;
}
cout<<"n";
}
}
Матрица должна получится вида:
Задачу решил следующим образом:
/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .cpp.geshi_code {font-family:monospace;} .cpp.geshi_code .imp {font-weight: bold; color: red;} .cpp.geshi_code .kw1 {color: #0000ff;} .cpp.geshi_code .kw2 {color: #0000ff;} .cpp.geshi_code .kw3 {color: #0000dd;} .cpp.geshi_code .kw4 {color: #0000ff;} .cpp.geshi_code .co1 {color: #666666;} .cpp.geshi_code .co2 {color: #339900;} .cpp.geshi_code .coMULTI {color: #ff0000; font-style: italic;} .cpp.geshi_code .es0 {color: #000099; font-weight: bold;} .cpp.geshi_code .es1 {color: #000099; font-weight: bold;} .cpp.geshi_code .es2 {color: #660099; font-weight: bold;} .cpp.geshi_code .es3 {color: #660099; font-weight: bold;} .cpp.geshi_code .es4 {color: #660099; font-weight: bold;} .cpp.geshi_code .es5 {color: #006699; font-weight: bold;} .cpp.geshi_code .br0 {color: #008000;} .cpp.geshi_code .sy0 {color: #008000;} .cpp.geshi_code .sy1 {color: #000080;} .cpp.geshi_code .sy2 {color: #000040;} .cpp.geshi_code .sy3 {color: #000040;} .cpp.geshi_code .sy4 {color: #008080;} .cpp.geshi_code .st0 {color: #FF0000;} .cpp.geshi_code .nu0 {color: #0000dd;} .cpp.geshi_code .nu6 {color: #208080;} .cpp.geshi_code .nu8 {color: #208080;} .cpp.geshi_code .nu12 {color: #208080;} .cpp.geshi_code .nu16 {color:#800080;} .cpp.geshi_code .nu17 {color:#800080;} .cpp.geshi_code .nu18 {color:#800080;} .cpp.geshi_code .nu19 {color:#800080;} .cpp.geshi_code .me1 {color: #007788;} .cpp.geshi_code .me2 {color: #007788;} .cpp.geshi_code span.xtra { display:block; }
#include<iostream.h>
#include<math.h>
int main()
{
cout << "Eta programma stroit matrix deistvitelnux chiseln"
<< "na osnove vvedennogo parametra Xn"
<< "Vvedite znachenie parametra X:";
float X;
cin >> X;
float mtrx[10][10];
int j=0, i=0, q=0;
while(q<=9&&i<=9)
{
mtrx[i][j]=pow(X,(0+q));
i++;
q++;
}
i=0, q=0;
while(q<=9&&j<=9)
{
mtrx[i][j]=pow(X,(0+q));
j++;
q++;
}
j=9, q=9, i=0;
while(q>=0&&i<=9)
{
mtrx[i][j]=pow(X,(0+q));
q--;
i++;
}
q=9,i=9,j=0;
while(q>=0&&j<=9)
{
mtrx[i][j]=pow(X,(0+q));
q--;
j++;
}
for(j=1;j<=8;j++)
{
i=1;
while(i<=8)
{
mtrx[i][j]=0;
i++;
}
}
for(j=0;j<=9;j++)
{
i=0;
while(i<=9)
{
cout<<" "<<mtrx[i][j];
i++;
}
cout<<"n";
}
}
1 ответов
Когда прочтете это, уточните - в выше приведенном массиве кроме 'краевых' столбцов и строк, все остальные имеют значения 0???
Если так, то единственное, что Вам нужно - это функция pow() из стандартной библиотеки(загаловочный файл "cmath").
Решение выглядит примерно так:
#include <iostream>
#include <cmath>
using namespace std;
//создаем квадратный массив размером 10х10 и инициализируем нулями
double arr[10][10] = { 0 };
//допустим у нас уже есть переменная х, с некоторым нужным значением
double x = ...;
//нам необходимо обработать только 'краевые' столбцы/строки
//начинаем с первой строки
for(int ix = 0; ix < 10; ix++)
{
//первый индекс 0, посклоьку на данном этапе обрабатываем только первую строку(индексация массивом
//начинается с нуля)
arr[0][ix] = pow(x, (double)ix);
//чтобы не терять времени, банально копируем элементы первой строки соответствующим элементам
//первого столбца
arr[ix][0] = arr[0][ix];
}
//после этих действии нам надо получить последную строку и последний столбец, которые
//являются 'обратным' к первым. То есть нам достаточно просто копировать первую строку
//в последнюю в обратном порядке(то же самое со столбцами).
int jx = 9;
for(int ix = 0; ix < 10; ix++)
{
//в цикле используется то же имя счетчика, что и в первом, если Ваша среда разработки -
//Visual C++ 6, то после выхода из цикла переменная счетчика не ликвидируется - будьте внимательны.
arr[9][jx] = arr[0][ix]; //строка
arr[jx][9] = arr[ix][0];
}
Это в том случае, если я правильно понял вопрос, но если что-то не так, просто уточните задачу!
double* matrix(double x)
{
static double mtrx[10][10];
double* ptr = &mtrx[0][0];
for(int n = 0; n < 100; ++n) *(ptr++) = 0.0;
mtrx[0][0] = mtrx[9][9] = 1.0;
for(int n = 1; n < 10; ++n) {
mtrx[9 - n][9] = mtrx[9][9 - n] = mtrx[0][n] = mtrx[n][0] = mtrx[n - 1][0] * x;
}
return &mrtx[0][0];
}
и никаких степеней
Помогите пожалуйста, число возвести в степень в программе QT
#include<windows.h> //Системный заголовок файла
#include<iostream>
using namespace std; //Использовать стандартное пространство имен
int main()
{
system("title Програмирование Работа 1 - Задание № 2.1.4 "); //Вывести сообщение в заголовок консоли с помощь системной команды title
//руссификация консоли
SetConsoleOutputCP(1251); //Установить кодовую таблицу для окна консоли
system("color f1"); //Задание свойств консоли (цветовая схема)
system("echo ДЕЙСВТИЕ ВЫПОЛНЯЕМЫЕ ПРОГРАММОЙ "); //Вывести сообщение с помощью команды есрщ косольного режима Windows
system("echo . ");
system("echo Представленную формулу x^y должны ввестись значения для X и Y: ");
system("echo . ");
double x(0),y(0); //2 Входных переменных X и Y
double otvet(0); //Вывод результата решении формулы
double pow (0);
//ВВОД ВХОДНЫХ ДАННЫХ
cout<<"Пожалуйсто ведите значение для X => ";
cin>>x;
cout<<"Пожалуйсто ведите значение для Y => ";
cin>>y;
//ФОРМУЛА ДЛЯ ВЫЧИСЛЕНИЯ
otvet= pow(x,y);
//ВЫВОД РЕЗУЛЬТАТА
system("echo ....................................................... ");
system("echo ВЫЧИСЛЕНИЕ: ");
cout<<"Результат решение "<<x<<"^"<<y<<" = " <<otvet<<endl<<endl;
system("pause"); //Держать консоль на экране до нажатия на любою клавишу
return 0; //Вернуть управленеи в ОС и возвратить код норального завершения
}
#include<iostream>
using namespace std; //Использовать стандартное пространство имен
int main()
{
system("title Програмирование Работа 1 - Задание № 2.1.4 "); //Вывести сообщение в заголовок консоли с помощь системной команды title
//руссификация консоли
SetConsoleOutputCP(1251); //Установить кодовую таблицу для окна консоли
system("color f1"); //Задание свойств консоли (цветовая схема)
system("echo ДЕЙСВТИЕ ВЫПОЛНЯЕМЫЕ ПРОГРАММОЙ "); //Вывести сообщение с помощью команды есрщ косольного режима Windows
system("echo . ");
system("echo Представленную формулу x^y должны ввестись значения для X и Y: ");
system("echo . ");
double x(0),y(0); //2 Входных переменных X и Y
double otvet(0); //Вывод результата решении формулы
double pow (0);
//ВВОД ВХОДНЫХ ДАННЫХ
cout<<"Пожалуйсто ведите значение для X => ";
cin>>x;
cout<<"Пожалуйсто ведите значение для Y => ";
cin>>y;
//ФОРМУЛА ДЛЯ ВЫЧИСЛЕНИЯ
otvet= pow(x,y);
//ВЫВОД РЕЗУЛЬТАТА
system("echo ....................................................... ");
system("echo ВЫЧИСЛЕНИЕ: ");
cout<<"Результат решение "<<x<<"^"<<y<<" = " <<otvet<<endl<<endl;
system("pause"); //Держать консоль на экране до нажатия на любою клавишу
return 0; //Вернуть управленеи в ОС и возвратить код норального завершения
}
Уже все давно реализовано. http://www.cplusplus.com/reference/clibrary/cmath/pow/