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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2008, 14:00   #1
ManInBlack
Пользователь
 
Регистрация: 20.10.2008
Сообщений: 25
По умолчанию Возведение в степень без подключения <math.h>

Как реализовать возведение в степень (основание double, показатель int), без подключения <math.h>, на Си
Я в этом деле новичок, так что если можно по проще, чтобы я смог понять как работает.

Заранее благодарен
ManInBlack вне форума Ответить с цитированием
Старый 22.12.2008, 14:31   #2
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

main()
{
int n=4,i;
double x=2.456,rez;
rez=x;
for(i=1;i<n;i++)
rez=rez*x;
}
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Старый 22.12.2008, 15:34   #3
ManInBlack
Пользователь
 
Регистрация: 20.10.2008
Сообщений: 25
По умолчанию

все понял. спасибо большое
ManInBlack вне форума Ответить с цитированием
Старый 22.12.2008, 23:57   #4
ManInBlack
Пользователь
 
Регистрация: 20.10.2008
Сообщений: 25
По умолчанию

#include<stdio.h>
double S_P(double,int);
void main()
{
double x, R;
int y;
for(;;
{
printf("Vvedite osnovanie\n");
scanf("%lf", &x);
printf("Vvedite pokazatel\n");
scanf("%d", &y);
{
if(y==1)break;
}
R=S_P(x,y);
prinf("R=%lf\n", R);
}
}
double S_P(double x,int y)
{
int i;
double N;
N=1;
for(i=1;i<=y;i++)
N=N*x;
return N;
}

вот написал вроде все, но показывает ошибку в break, не пойму как исправить

Последний раз редактировалось ManInBlack; 23.12.2008 в 12:30.
ManInBlack вне форума Ответить с цитированием
Старый 23.12.2008, 08:03   #5
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Код:
if(y==1)
{
break;
}
К чему эта инструкция? она не несет никаккой смысловой нагрузки. break перывает выполнение текущего цикла, которого в тот момент нет.


N=x;
for(i=1;i<=y;i++)
N=N*x;


У тебя там еще и математическая ошибка, точнее арефметическая.

Проверяем. вводим различные значения Y (это ведь показатель степени верно?)
пусть Y=1

N=x//замени на N=1
N=N*x=x*x иными словами N в первой степени у тебя равна квадрату.

замени
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс

Последний раз редактировалось ROD; 23.12.2008 в 08:07.
ROD вне форума Ответить с цитированием
Старый 23.12.2008, 08:16   #6
ManInBlack
Пользователь
 
Регистрация: 20.10.2008
Сообщений: 25
По умолчанию

N=x//замени на N=1
N=N*x=x*x иными словами N в первой степени у тебя равна квадрату.
логично

но как раз при y=1, должен происходить последний запрос данных, выполнение операции и завершение работы
ManInBlack вне форума Ответить с цитированием
Старый 23.12.2008, 08:50   #7
s.Creator
Форумчанин
 
Регистрация: 28.09.2008
Сообщений: 344
По умолчанию

если убрать ;
Код:
while(1);
то break будет в цикле
и вопрос
в функции
Код:
double S_P(double,int)
используются входные параметры?
Я думал надо
Код:
double S_P(double x,int y)
s.Creator вне форума Ответить с цитированием
Старый 23.12.2008, 08:50   #8
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

это у тебя она равна квадрату
говорю тебе, замени у себя в проге строку
Код:
N=x
на
Код:
N=1
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума Ответить с цитированием
Старый 23.12.2008, 09:28   #9
Ламер_001
Ну и что? :)
Форумчанин
 
Регистрация: 20.10.2008
Сообщений: 129
По умолчанию

ну и напоследок:
scanf("%lf", &y);
на
scanf("%d", &y);
Учиться, учиться и еще раз учиться
Ламер_001 вне форума Ответить с цитированием
Старый 23.12.2008, 12:57   #10
ManInBlack
Пользователь
 
Регистрация: 20.10.2008
Сообщений: 25
По умолчанию

Всем спасибо, все заработало, осталось только добавить ветку для отрицательных показателей и все будет шикарно)
ManInBlack вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возведение в степень на Pascal LORD-BY Помощь студентам 32 28.02.2018 07:48
Возведение в отрицательную степень geishaz Паскаль, Turbo Pascal, PascalABC.NET 4 09.11.2008 22:43
Возведение числа в степень Roberto Помощь студентам 9 05.04.2008 09:50
Возведение в степень Stanislav Общие вопросы Delphi 10 05.12.2007 23:34
Возведение в степень... Sota Общие вопросы C/C++ 7 18.07.2007 17:05