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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2011, 00:09   #1
sashqaw0w
 
Регистрация: 11.12.2011
Сообщений: 7
По умолчанию что не так?

дана функция y = f(x, a)Найти для каждого a среднее арифметическое отрицательных значений функции
x - while , a - for
var x,y,a,x1,x2,x3,a1,a2,m: integer;
function у(х,а: integer): integer;

begin
y := x+a;
end;
function MaxNumber(х,а: integer): integer;
var s,sum,n: integer;
begin
x=x1;
sum=0;
n=0;
while x <> x2 do { цикл с предусловием }
begin
s:=y(x,a);

if s<0 then begin
sum:=sum+s ;
n=n+1;
end;
x=x+x3;
end;

if n<>0 then
MaxNumber := sum/n;
end;

begin
write('Введите x1,x2,x3,a1,a2 ');
readln(x1,x2,x3,a1,a2);
for a := a1 to a2 do { итерационный цикл }
begin
m:=MaxNumber(x,a);
writeln('среднее врифметическое=', m);
end;
end.
где ошибка?
sashqaw0w вне форума Ответить с цитированием
Старый 25.12.2011, 00:22   #2
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Как-то так:
Код:
var
  x,y,a,x1,x2,x3,a1,a2: integer;
  m:real;

 function MaxNumber(х,а: integer): real;
 var
   s,sum,n: integer;
 begin
   x:=x1;
   sum:=0;
   n:=0;
   while x <> x2 do { цикл с предусловием }
   begin
     s:=x+a; //зачем изобретать велосипед?
       if s<0 then begin
         sum:=sum+s ;
         n:=n+1;
       end;
     x:=x+x3;
   end;

 if n<>0 then
   MaxNumber := sum/n;
 end;

 begin
 write('Введите x1,x2,x3,a1,a2 ');
 readln(x1,x2,x3,a1,a2);
 for a := a1 to a2 do { итерационный цикл }
 begin
 m:=MaxNumber(x,a);
 writeln('среднее врифметическое=', m);
 end;
 readln;
 end.
Ошибки в основном в том, что знак присваивания это " := ", а не просто равно.
Программа запускается, чета даже считает, а вот правильно или нет разбирайся сам.
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 25.12.2011, 00:28   #3
sashqaw0w
 
Регистрация: 11.12.2011
Сообщений: 7
По умолчанию

Цитата:
Сообщение от whatever Посмотреть сообщение
Как-то так:
Код:
var
  x,y,a,x1,x2,x3,a1,a2: integer;
  m:real;

 function MaxNumber(х,а: integer): real;
 var
   s,sum,n: integer;
 begin
   x:=x1;
   sum:=0;
   n:=0;
   while x <> x2 do { цикл с предусловием }
   begin
     s:=x+a; //зачем изобретать велосипед?
       if s<0 then begin
         sum:=sum+s ;
         n:=n+1;
       end;
     x:=x+x3;
   end;

 if n<>0 then
   MaxNumber := sum/n;
 end;

 begin
 write('Введите x1,x2,x3,a1,a2 ');
 readln(x1,x2,x3,a1,a2);
 for a := a1 to a2 do { итерационный цикл }
 begin
 m:=MaxNumber(x,a);
 writeln('среднее врифметическое=', m);
 end;
 readln;
 end.
Ошибки в основном в том, что знак присваивания это " := ", а не просто равно.
Программа запускается, чета даже считает, а вот правильно или нет разбирайся сам.
function у(х,а: integer): integer; он вот тут ругаеться
sashqaw0w вне форума Ответить с цитированием
Старый 25.12.2011, 00:30   #4
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Зачем тебе вообще эта функция нужна? Она же просто складывает x и a, я периписал без нее

Update: Ну если очень хочется, то вот так:
Код:
var
  x,y,a,x1,x2,x3,a1,a2: integer;
  m:real;

 function у(х,а: integer): integer;
   begin
     y := x+a;
   end;

 function MaxNumber(х,а: integer): real;
 var
   s,sum,n: integer;
 begin
   x:=x1;
   sum:=0;
   n:=0;
   while x <> x2 do { цикл с предусловием }
   begin
     s:=y; //зачем изобретать велосипед?
       if s<0 then begin
         sum:=sum+s ;
         n:=n+1;
       end;
     x:=x+x3;
   end;

 if n<>0 then
   MaxNumber := sum/n;
 end;

 begin
 write('Введите x1,x2,x3,a1,a2 ');
 readln(x1,x2,x3,a1,a2);
 for a := a1 to a2 do { итерационный цикл }
 begin
 m:=MaxNumber(x,a);
 writeln('среднее врифметическое=', m);
 end;
 readln;
 end.
Все тривиальное просто

Последний раз редактировалось whatever; 25.12.2011 в 00:35.
whatever вне форума Ответить с цитированием
Старый 25.12.2011, 16:11   #5
sashqaw0w
 
Регистрация: 11.12.2011
Сообщений: 7
По умолчанию

Цитата:
Сообщение от whatever Посмотреть сообщение
Зачем тебе вообще эта функция нужна? Она же просто складывает x и a, я периписал без нее

Update: Ну если очень хочется, то вот так:
Код:
var
  x,y,a,x1,x2,x3,a1,a2: integer;
  m:real;

 function у(х,а: integer): integer;
   begin
     y := x+a;
   end;

 function MaxNumber(х,а: integer): real;
 var
   s,sum,n: integer;
 begin
   x:=x1;
   sum:=0;
   n:=0;
   while x <> x2 do { цикл с предусловием }
   begin
     s:=y; //зачем изобретать велосипед?
       if s<0 then begin
         sum:=sum+s ;
         n:=n+1;
       end;
     x:=x+x3;
   end;

 if n<>0 then
   MaxNumber := sum/n;
 end;

 begin
 write('Введите x1,x2,x3,a1,a2 ');
 readln(x1,x2,x3,a1,a2);
 for a := a1 to a2 do { итерационный цикл }
 begin
 m:=MaxNumber(x,a);
 writeln('среднее врифметическое=', m);
 end;
 readln;
 end.
все равно программа не работает
sashqaw0w вне форума Ответить с цитированием
Старый 25.12.2011, 16:58   #6
Camaro Chevelle
Форумчанин
 
Регистрация: 05.11.2011
Сообщений: 102
По умолчанию

ахах, ну если ты просто скопипастил, то вылетать должно в том месте, где написано "//зачем изобретать велосипед?"
Camaro Chevelle вне форума Ответить с цитированием
Старый 25.12.2011, 19:23   #7
sashqaw0w
 
Регистрация: 11.12.2011
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Camaro Chevelle Посмотреть сообщение
ахах, ну если ты просто скопипастил, то вылетать должно в том месте, где написано "//зачем изобретать велосипед?"
че то вообще не получаеться без функций да и сними тоже
sashqaw0w вне форума Ответить с цитированием
Старый 25.12.2011, 19:43   #8
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Цитата:
Сообщение от Camaro Chevelle Посмотреть сообщение
ахах, ну если ты просто скопипастил, то вылетать должно в том месте, где написано "//зачем изобретать велосипед?"
Просмотрел... Самое смешное здесь в том, что в дэлфи компилятор это пропускает и запускает программу, только S присваивает 0 (что, с одной стороны, логично).

А вообще действительно, зачем вообще писать эту функцию y? Все-таки я бы выбрал код из своего первого сообщения.
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 25.12.2011, 19:50   #9
Camaro Chevelle
Форумчанин
 
Регистрация: 05.11.2011
Сообщений: 102
По умолчанию

я имел в виду, что по правилам вроде как не допускаются комменты после двойных косых а только в фигурных скобках либо (*.....*)
Camaro Chevelle вне форума Ответить с цитированием
Старый 25.12.2011, 19:53   #10
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Допускаются, 100%. Постоянно так коментирую, так как фигурные скобки ставить и убирать не очень удобно.
Все тривиальное просто
whatever вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что-то не так в программе...не пойму что Karina_Vamp Помощь студентам 5 24.12.2010 21:06
А что не так??? frargus Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 21.03.2010 08:05
Что-то не так Radiofuck Помощь студентам 2 16.01.2007 22:06