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

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

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

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

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

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

Всем доброго времени суток!
недавно столкнулся с задачей на Pascal'е. Она звучит следующим образом:
"type natur = 1..maxint;
var a, b : real; k: natur;
Описать функцию st(x, n) от вещественного x и натурального n , вычисляющую через умножение величину , и использовать ее для вычисления определенного выражения."

Я написал код всей проги. Вот он:
Код:
program zadacha;
Uses CRT;
type natur = 1..maxint;
var a,b:real; k:natur;
function st(x:real;n:natur):real;
var p:real;
    i:integer;
begin
     p:=1;
     for i:=1 to n do begin p:=p*x;
     writeln(p:5:3); end;
end;
begin clrscr;
write('Input a and k:'); read(a,k);
b:=st(2.7,k)+1/st((a+1),5);
writeln('b=',b:6:3);
readkey;
end.
Но программа работает некорректно. Например, если ввести k=0 и a=0, то ответ должен быть равен 2! В чем же ошибка не разберу. Прошу указать на ошибку или предложить другой вариант алгоритма.
Прошу помочь. Всем заранее спасибо.
Лучше С++, чем ++С...
Sota вне форума Ответить с цитированием
Старый 24.05.2008, 19:45   #2
hoza_syl
Форумчанин
 
Аватар для hoza_syl
 
Регистрация: 23.05.2008
Сообщений: 219
Восклицание

Конечно не работает.
Твоя функция st вместо того, чтобы возвращать результат, просто печатает его на екране.

Вот тебе нормальный код:
Код:
program zadacha;
 uses crt;
type natur = 1..maxint;   
var a,b:real; k:natur;

function st(x:real; n:natur):real;   
var p:real;   
    i:integer;   
begin   
     p:=1;   
     for i:=1 to n do
     begin
        p:=p*x;
        writeln(p:5:3); //если разпечатка на екране не нужна, удали эту строку
     end;
     result:=p;  //А эту добавь!!!:) 
end;   
begin
write('Input a and k:');
read(a,k);
b:=st(2.7,k)+1/
st((a+1),5);

writeln('b=',b:6:3);   
readkey;
end.
The Revolution is Now!
hoza_syl вне форума Ответить с цитированием
Старый 24.05.2008, 19:56   #3
Sota
Let's keep talking
Форумчанин Подтвердите свой е-майл
 
Аватар для Sota
 
Регистрация: 02.07.2007
Сообщений: 217
По умолчанию

Огромное спасибо)))... Да, действительно я ступил)))... Ещё раз спасибо.)))
Лучше С++, чем ++С...
Sota вне форума Ответить с цитированием
Старый 24.05.2008, 19:57   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
вычисляющую через умножение величину , и использовать ее для вычисления определенного выражения."
Ваша функция должна умножать одно число на другое, а у вас по сути пошаговое возведение в степень с выводом на экран. По сути это процедура. А все намного проще. Вот код.
Кстати To hoza_syl result в Паскале не рулит.

Код:
program zadacha;   
Uses CRT;   
type natur = 1..maxint;   
var a,b:real; k:natur;   
function st(x:real;n:natur):real;   
begin
st:=n*x;//умножение
end;
begin
clrscr;
write('Input a and k:');
read(a,k);
b:=st(a,k)+1/st(a,k);//выражение использует функцию умножения
writeln('b=',b:6:3);   
readkey;
end.
puporev вне форума Ответить с цитированием
Старый 24.05.2008, 20:09   #5
hoza_syl
Форумчанин
 
Аватар для hoza_syl
 
Регистрация: 23.05.2008
Сообщений: 219
По умолчанию

Цитата:
result в Паскале не рулит
Да дал маху. Там надо написать :
Код:
st:=p;
А вообще, я не понял задачи. А заметив в коде ошыбку решил помочь исправить.
The Revolution is Now!
hoza_syl вне форума Ответить с цитированием
Старый 24.05.2008, 22:19   #6
Sota
Let's keep talking
Форумчанин Подтвердите свой е-майл
 
Аватар для Sota
 
Регистрация: 02.07.2007
Сообщений: 217
По умолчанию

я сначала тож не врубился, че за резулт. Но потом заменил на нужную операцию присваивания и все ОК. А код у меня такой был, т.к там нужно возведение степени методом умножения сделать. Вот пришлось зацикливать)))
Лучше С++, чем ++С...
Sota вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функция ZiLi Microsoft Office Excel 1 05.09.2008 18:37
функция sergei64_89 Общие вопросы C/C++ 2 25.05.2008 16:48
функция Janette Помощь студентам 1 29.04.2008 20:10
одна функция потока, а другая функция - член класса запускающего этот поток Дмитрий_Ч Общие вопросы C/C++ 2 27.09.2007 08:50