Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.07.2007, 19:42   #1
Sota
Let's keep talking
Форумчанин Подтвердите свой е-майл
 
Аватар для Sota
 
Регистрация: 02.07.2007
Сообщений: 217
Вопрос Возведение в степень...

Здравствуйте уважаемые господа программисты. Обращаюсь на этот раз со следующим вопросом, который, возможно, многим покажется слишком простым: перед мной стояла задача написать программу, которая значение при возведении какого-либо числа в какую-либо степень. После некоторого времени раздумья я накодил следующую прогу:
Код:
 
#include <iostream>
#include <conio>
using namespace std;
void main(void) {
long double k, x, y, otv;
cout << "Vvedite chislo: ";
cin >> x;
cout << "Vvedite znachenie stepeni: ";
cin >> y;
otv=x;
for(k=1; k<y; k++) otv*=x;
cout << "** x v stepeni y raven " << otv << " **" << endl;
getch();
return; }
Но мне кажется, что этот алгоритм можно сильно упростить. Если у кого-нибудь есть мысли на этот счёт, то прошу помочь мне. Возможно для этих целей есть библиотечные функции? Вообщем, всем, кто хоть чем то поможет, буду очень благодарен.
Лучше С++, чем ++С...
Sota вне форума Ответить с цитированием
Старый 17.07.2007, 23:41   #2
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

#include <math.h>

pow(a,b)

И вообще при больших степенях пользуются логарифмом.
Carbon вне форума Ответить с цитированием
Старый 17.07.2007, 23:43   #3
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,378
По умолчанию

#include <iostream>
#include <conio>
#include <Cmath>
using namespace std;
void main(void) {
long double k, x, y, otv;
cout << "Vvedite chislo: ";
cin >> x;
cout << "Vvedite znachenie stepeni: ";
cin >> y;
k=pow(x,y);
cout<<k<<endl;
getch();
return; }
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 18.07.2007, 07:36   #4
merax
Форумчанин
 
Регистрация: 27.12.2006
Сообщений: 955
По умолчанию

Уважаемые Дамы и Господа!!!
Оформляйте пожалуйста исходные тексты программ в более читабельный вид. Я конечно понимаю, что мы все профи и можем набивать программу сплошным текстом и не глядя на клавиатуру . Но увы, людям начинающим программировать тяжело выделить основные блоки текста. И самое главное ПИШИТЕ КОММЕНТАРИИ к сложным функциям с указанием заголовочных файлов откуда они вызываются. И не используйте смесь языков пишите либо по русски либо по английски, вы же программисты, а какой же программист без английского, а вообще не так трудно добавить поддержку русского языка в программу !!!???
Спасибо за понимание.
С уважением merax.

Последний раз редактировалось merax; 18.07.2007 в 07:40.
merax вне форума Ответить с цитированием
Старый 18.07.2007, 13:06   #5
Sota
Let's keep talking
Форумчанин Подтвердите свой е-майл
 
Аватар для Sota
 
Регистрация: 02.07.2007
Сообщений: 217
Стрелка

Как я понимаю, pow() – это библиотечная функция? Наверное да… И ещё, уважаемый Carbon сказал, что при больших степенях пользуются логарифмом. А не мог бы кто-нибудь показать это на примере какого либо кода. Желательно с комментариями, если они действительно будут необходимы.
Послушав merax’a хочу сказать, что теперь код я буду записывать в таком формате:
Код:
 
 
#include <iostream>
#include <conio>
#include <windows>
#include <math>
using namespace std;
char Rus[256];
int main(void)
{
long double k, x, y, otv; // Объявление необходимых переменных
 
BEGIN: // Ссылка на основной выполняемый код
CharToOem("Введите число: ", Rus); // Приглашение на
cout << Rus; // ввод данных
cin >> x; // Ввод данных от пользователя
CharToOem("Введите значение степени: ", Rus); // Ещё одно риглашение
cout << Rus; // на ввод данных 
cin >> y; // Ввод данных от пользователя
otv=pow(x, y); // Вызов функции возведения в степень 
// из заголовка <math>.
CharToOem(" в степени ", Rus); // Вывод
cout << "** " << x << Rus << y; // результатов
CharToOem(" равно: ", Rus); // вычисления
cout << Rus << otv << " **\n"; // cтепени
CharToOem("Выбирите дальнейшие действия:\n", Rus);
cout << Rus;
CharToOem("1) Произвести новые вычисления.\n", Rus);
cout << Rus;
CharToOem("2) Выйти из программы.\n", Rus);
cout << Rus;
// Приглашение на выбор 
cout << Rus; // дальнейшего хода работы программы
int option; // Объявление переменной, которая будет 
// хранить результат выбора
do { // Начало работы цикла выбора
cin >> option; // Ввод данных от пользователя
switch(option) {
case 1:
goto BEGIN; // Ссылка на выполнение основного кода
case 2:
break; 
}
} while(option!=2);
 
return 0;
}
Я только новичок в программировании(всего два месяца), возможно программу можно и покороче написать. Так я думаю текст станет намного читабельней.
Лучше С++, чем ++С...
Sota вне форума Ответить с цитированием
Старый 18.07.2007, 13:26   #6
merax
Форумчанин
 
Регистрация: 27.12.2006
Сообщений: 955
По умолчанию

Это издевательство ??????
merax вне форума Ответить с цитированием
Старый 18.07.2007, 16:38   #7
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Цитата:
что теперь код я буду записывать в таком формате
Нет!!! Только не так!!! Я ж со смеха прям перед компом помру!!!

Цитата:
при больших степенях пользуются логарифмом
Это, если не знать о существовании pow (там вроде асмовский код), а возводить в степень в цикле: так никакой проц не выдержит.

Вот формула (на всякий случай): x^y=exp(y*ln(x)).
Carbon вне форума Ответить с цитированием
Старый 18.07.2007, 17:05   #8
Sota
Let's keep talking
Форумчанин Подтвердите свой е-майл
 
Аватар для Sota
 
Регистрация: 02.07.2007
Сообщений: 217
Смех

Нет это не издевательство... Да я вообще-то это шуткой сказал. Ну вы сами подумайте, кто так будет код записывать. Так что не думайте, я код буду записывать как раньше! Меня от этого вряд ли отучить можно. А вот за формулу спасибо огромное! Труды мои она облегчит, и нервы сбережот. Так что не обижайтесь.
Ах да! Я как понимаю, вы тут, ну, типа главные на форуме? Если да, то не могли бы вы сказать, где вообще ваш сервак находится. (Ну в смысле город). Конечно если хотите, можете не отвечать.
P.s Рад что хоть кого-то насмешил!
Лучше С++, чем ++С...
Sota вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возведение в степень на Pascal LORD-BY Помощь студентам 32 28.02.2018 07:48
Возведение числа в степень Roberto Помощь студентам 9 05.04.2008 09:50
Возведение в степень Stanislav Общие вопросы Delphi 10 05.12.2007 23:34
Задачи по массивам + возведение действительного числа в действительную степень springgirl Помощь студентам 2 24.04.2007 03:26
Delphi Возведение в степень Luska Помощь студентам 6 23.04.2007 17:51