Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 29.03.2013, 17:34   #1 (permalink)
Niko23
Новичок
 
Регистрация: 29.03.2013
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Post Лабораторная работа

Составить циклическую программу вычисления функции Y=f(xi), где Xi заданно в виде массива, и значение искомых переменных A3, R2, R3, G0, min, G3.

Y=(x*x*cos(x)-700*exp(sin(x)))/(1.6+0.9*1e0.9*x*x) ,если exp(sin(x))>1.5
и
Y=0.00567*exp(1/3*ln(abs(x)))+2.14*exp(sin(x)) ,если exp(sin(x))<=1.5
G0 - среднее герметрическое для всех y
A3 - среднее арифметическое для y>v v=2.1
G3 - среднее геометрическое для y>v v=2.1
Min - минимальный по абсолютной величине результат
R2 - массив результатов y не меньших w w=0.5
R3 - массив отрицательных значений y

Массив X (0.01) (0.02) (-0.5) (2.31) (0) (1) (0) (-1.25) (-1) (-0.77) (0)
В конце программы вывести A3, R2, R3, G0, min, G3.

Заранее благодарю.
Niko23 вне форума   Ответить с цитированием

Старый 29.03.2013, 17:34
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Люди уже создавали что то подобное, так что можете почитать

Работа с графикой. C/C++
Работа со списками
Работа с матрицами
Тепловые трубки. Лабораторная работа :)

Старый 29.03.2013, 17:36   #2 (permalink)
Léon
С# - learn or die
 
Аватар для Léon
 
Регистрация: 17.12.2011
Сообщений: 2,438
Записей в дневнике: 8
Сказал(а) спасибо: 21
Поблагодарили 49 раз(а) в 11 сообщениях
Репутация: 19701
По умолчанию

И классика: язык программирования?
Léon вне форума   Ответить с цитированием
Старый 29.03.2013, 18:41   #3 (permalink)
Niko23
Новичок
 
Регистрация: 29.03.2013
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от 11Angelav Посмотреть сообщение
И классика: язык программирования?
На паскале
Niko23 вне форума   Ответить с цитированием
Старый 29.03.2013, 20:27   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Вот это вот расшифруйте, пожалуйста:
Цитата:
Сообщение от Niko23 Посмотреть сообщение
0.9*1e0.9*x*x
Vladimir_S вне форума   Ответить с цитированием
Старый 30.03.2013, 16:25   #5 (permalink)
Niko23
Новичок
 
Регистрация: 29.03.2013
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
Вот это вот расшифруйте, пожалуйста:
0.9 умножить на 10 в степени 0.9 и умножить на икс в квадрате
Niko23 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 30.03.2013, 21:14   #6 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Niko23 Посмотреть сообщение
0.9 умножить на 10 в степени 0.9 и умножить на икс в квадрате
Тогда так:
Код:
Const
 X:Array[1..11] of Real=(0.01,0.02,-0.5,2.31,0,1,0,-1.25,-1,-0.77,0);
 v=2.1;
 w=0.5;

Var
 Y,R2,R3:Array[1..11] of Real;
 G0,A3,G3,Min:Real;
 i,NA3,NR2,NR3:Byte;

Function F(z:real):real;
begin
 If exp(sin(z))>1.5 then
  F:=(z*z*cos(z)-700*exp(sin(z)))/(1.6+0.9*exp(0.9*ln(10))*z*z)
 else
  begin
   if abs(z)>0 then
    F:=0.00567*exp(1/3*ln(abs(z)))+2.14*exp(sin(z))
   else
    F:=2.14*exp(sin(z));
  end;
end;

Begin
 For i:=1 to 11 do
  begin
   Y[i]:=F(X[i]);
   Writeln('X= ',X[i]:8:3,'     Y= ',Y[i]:8:3);
  end;
 Writeln;
 NR2:=0;
 NR3:=0;
 Min:=Abs(Y[1]);
 G0:=1;
 A3:=0;
 G3:=1;
 For i:=1 to 11 do
  begin
   G0:=G0*Y[i];
   if Y[i]>v then
    begin
     Inc(NA3);
     A3:=A3+Y[i];
     G3:=G3*Y[i];
    end;
   if Abs(Y[i])<Min then Min:=Abs(Y[i]);
   if Y[i]>=w then
    begin
     Inc(NR2);
     R2[NR2]:=Y[i];
    end;
   if Y[i]<0 then
    begin
     Inc(NR3);
     R3[NR3]:=Y[i];
    end;
  end;
 Write('G0: ');
 If G0>0 then writeln(exp((1/11)*ln(G0)):10:5) else writeln('Incorrect value!');
 Write('A3: ');
 If NA3>0 then writeln(A3/NA3:10:5) else writeln('Incorrect value!');
 Write('G3: ');
 If (NA3>0) and (G3>0) then writeln(exp((1/NA3)*ln(G3)):10:5) else writeln('Incorrect value!');
 Writeln('Min:',Min:10:5);
 Write('R2: ');
 If NR2>0 then for i:=1 to NR2 do write(R2[i]:8:3) else write('No such elements!');
 Writeln;
 Write('R3: ');
 If NR3>0 then for i:=1 to NR3 do write(R3[i]:15:5) else write('No such elements!');
 Readln
End.
Дополнительное ветвление функции связано с тем, что при нулевом аргументе множитель exp(1/3*ln(abs(x))) создает ошибку из-за логарифма. Пришлось поставить обход.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 15:21.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.