Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Pascal Значение функции 
:(
    Опции темы
Рыся
  Дата 25.2.2010, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 6.1.2010

Репутация: нет
Всего: нет



Задачка не сложная:
Вычислить значение функции f(a,b ), нужно решить с помощью подпрограмм. 
Код


uses crt;
function ONE(x,y:real):real;
var
  k:real;
begin
  k:=sqr(x)+x*y+sqr(y);
  ONE:=sqrt(k);
end;

function TWO(x:real):real;
begin
  TWO:=x+x*x+x*x*x+x*x*x*x;
end;

function THREE(x,y:real):real;
begin
  THREE:=x+y;
end;

var
  a,b,x,y,f,f1,f2,f3,f4:real;
begin
  clrscr;
  writeln ('введите a');
  readln (a);
  writeln ('введите b');
  readln (b);
  a:=x;
  b:=y;
  f1:=THREE(x,y)+ONE(x,y);
  f2:=TWO(x);
  x:=-a/b;
  f3:=TWO(x);
  x:=a/b;
  y:=-b/a;
  f4:=THREE(x,y)+ONE(x,y);
  f:=f1/f3+f4/f2;
  write(f:0:3);
  readln;
end.

Как сделать программу проще, чтоб не надо было вводить все эти f1, f2...


Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  P1070159.JPG 87,25 Kb
PM MAIL   Вверх
DeMoNN
Дата 26.2.2010, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 21.3.2008

Репутация: 1
Всего: 2



Если я правильно понял, то тебе нужно наиболее короткое решение этой задачи, но с использованием подпрограммы? Тогда вот:
Код

program func;

function f(a, b: real): real;
begin
    f := ((a + b + sqrt(a*a + a*b + b*b))/(-(a/b) + ((a * a) / (b * b)) - ((a * a * a) / (b * b * b)) + ((a * a * a * a) / (b * b * b * b)))) + ((a / b) - (b / a) + sqrt((a * a) / (b * b) - 1 + (b * b) / (a * a))) / (a + a * a + a * a * a + a * a * a * a);
end;

var
    a, b, ans: real;
begin
    write('a = ');
    readln(a);
    write('b = ');
    readln(b);
  writeln;
  if (a <> 0) and (b <> 0) then
  begin
    if ((a*a + a*b + b*b) >= 0) and ((-(a/b) + ((a * a) / (b * b)) <> 0)) and ((a * a) / (b * b) - 1 + (b * b) / (a * a) >= 0) then
    begin
        ans := f(a, b);
        writeln;
        writeln('f(', a:0:3, ', ', b:0:3, ') = ', ans:0:3);
    end
    else writeln('f(', a:0:3, ', ', b:0:3, ') does not exist');
  end
  else writeln('f(', a:0:3, ', ', b:0:3, ') does not exist');
    readln;
end.

надеюсь не ошибся при нборе функции.
ЗЫ А ты свою программу проверял? Зачем присваиваешь а и б после ввода нули?;)
Цитата

  writeln ('введите a');
  readln (a);
  writeln ('введите b');
  readln (b);
  a:=x; //х - ноль по умолчанию
  b:=y; //у - ноль по умолчанию

PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0377 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.