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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.04.2012, 20:29   #1
Naposaram
Пользователь
 
Регистрация: 22.11.2008
Сообщений: 52
Восклицание Вычисление суммы - проверьте пожалуйстa!

Всем привет =) наконец то последняя программка на паскале =D УРЯЯЯ!!!
Вот, нашел в сети примитивный пример и по образцу сделал прогу =)
Условие:
Цитата:
: Выполнить программу, использующую подпрограмму - функцию.
Вычислить значение величины, содержащей несколько однотипных сумм. Для вычисления сумм написать функцию пользователя.

Помогите вот в этих вопросах:
1) может ли быть "предел" у сумм разный или он и должен быть разный? наверно надо сделать отдельный ввод "m" для каждой суммы?
2) правильно ли я написал в третьей функции "m+2"?

Код:
program p1;
uses crt;

var m,k,i,a:integer;
    y:single;

function s1(): single;
var s:single;
    x:integer;
begin
 s:=0;
  for x:=1 to m do
   s:=s+k*k*k+2;
   s1:=s;
end;

function s2(): single;
var s:single;
    x:integer;
begin
 s:=0;
  for x:=1 to m do
   s:=s+i*i*i+3;
   s2:=s;
end;

function s3(): single;
var s:single;
    x:integer;
begin
 s:=0;
  for x:=3 to m+2 do
   s:=s+5*(k*k*k)+a;
   s3:=s;
end;

begin
 clrscr;
 writeln ('m='); readln (m);
 writeln ('k='); readln (k);
 writeln ('i='); readln (i);
 writeln ('a='); readln (a);
 y:=(2*s1+a*s2)/(6+s3);
 writeln ('y = ',y);
 readln;
end.
Naposaram вне форума Ответить с цитированием
Старый 02.04.2012, 21:14   #2
spein
Программист
Форумчанин
 
Аватар для spein
 
Регистрация: 27.02.2009
Сообщений: 505
По умолчанию

Если не ошибаюсь, в Паскаль функция не может быть без параметров.
there are no limits when you're software engineer
spein вне форума Ответить с цитированием
Старый 02.04.2012, 21:25   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
может ли быть "предел" у сумм разный или он и должен быть разный? наверно надо сделать отдельный ввод "m" для каждой суммы?
Может. Я бы сделал так: Для каждой суммы определил свои параметры. К примеру
Код:
function s1(a,b:integer): single;
var s:single;
    x:integer;
begin
 s:=0;
  for k:=a to b do
   s:=s+k*k*k+2;
   s1:=s;
end;
Ну и вызов:
Код:
y:=(2*s1(1,m)...;
Цитата:
Если не ошибаюсь
Ошибаешся, впрочем для автора стоит прислушаться к твоим словам.
Цитата:
2) правильно ли я написал в третьей функции "m+2"?
Сойдет, но всетки параметризируй функции.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.04.2012, 23:00   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

я бы тоже пошёл по пути, предложенном Stilet!

только я бы добавил в параметры и множитель первого элемента выражения и значение второго элемента выражения.
Это позволит использовать одну и ту же универсальную функцию вместо трёх разных.
примерно так:
Код:
function SumK(a, b, MnogK, AddConst : LongInt) : LongInt;
var k, s : longint;     
begin 
  s := 0;
  for k:=a to b do 
    s := s + (MnogK * k * k * k + AddConst);
  SumK := s;
end;

....
var y : double;

  тут описание переменных, ввод m, a
Обратите внимание, что во втором ряду суммируется L - по всей видимости его тоже надо ввести!

y := (2.0 * SumK(1, m, 1,  2) + a * SumK(1,m, 0, L*L*L+3) ) /
        ( 6 + SumK(3, m+2, 5, a) );

Последний раз редактировалось Serge_Bliznykov; 02.04.2012 в 23:03.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.04.2012, 23:31   #5
Naposaram
Пользователь
 
Регистрация: 22.11.2008
Сообщений: 52
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
только я бы добавил в параметры и множитель первого элемента выражения и значение второго элемента выражения.
Это позволит использовать одну и ту же универсальную функцию вместо трёх разных.
Учтем =)

Вот только мне немного не понятна эта запись:
Цитата:
SumK(1, m, 1, 2)
Вызов функции, а в скобках это зачем писать?

Пойду пока теорию поюзаю по функциям =)
Naposaram вне форума Ответить с цитированием
Старый 03.04.2012, 00:46   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Вызов функции, а в скобках это зачем писать?
в скобках - это параметры, которые мы в эту функцию передаём.

Цитата:
Пойду пока теорию поюзаю по функциям =)
вот это точно Вам не помешает!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычисление суммы и произведения Matveev Паскаль, Turbo Pascal, PascalABC.NET 6 18.03.2011 12:42
Вычисление суммы ряда. Си kira_truelove Помощь студентам 4 10.10.2010 21:36
Вычисление суммы! brazilec2 Помощь студентам 6 09.06.2010 20:14
Вычисление суммы mixanja Общие вопросы Delphi 1 13.04.2010 17:32
Задачи на вычисление суммы Many man Помощь студентам 7 20.12.2008 22:47