fortunazanna
18.04.2023 21:14

Программирование найти ошибку на выходе должны быть разные z полученные по методу половинного деления в цикле

program we;
const
е=0.01;
ro=0.57;
ty=280;
tz=320;
py=180;
p_kr=4.695;
t_kr=190.55;
n=8;
m=21;
type sm=array [1..8] of real;
const x_i: sm=(0.841,0.023,0.069,0.009,0.019,0.014,0.013,0.012);
t_i: sm=(190.55,305.43,369.82,425.16,408.13,469.65,460.39,507.35);
p_i: sm=(46.95,49.76,44.33,38.71,37.19,34.35,34.48,30.72);
var sa,sb: real; i: integer;
a_sm, b_sm,ppkr,tpkr: sm;
p_2,p1,p_sr,p_pr,t_sr,t_pr,pz,dp,t_x,t_pl,g,dt,h,p2,pl,p_x,s,c_r,b,c,a,c_st,f_a,f_b,f_c,z_sr,z,x1,l,sppkr,stpkr: real;
function fz(x1: real): real;
begin
fz: =exp(ln(x1)*3)-sqr(x1)+x1*p_sr*(sqr(sb)*p_sr+sa-sb)-sa*sb*sqr(p_sr);
end;
begin
sa: =0;
sb: =0;
sppkr: =0;
stpkr: =0;
for i: =1 to 8 do
begin
a_sm[i]: =((0.0867*t_i[i])/(p_i[i]*t_sr))*x_i[i];
b_sm[i]: =((0.4278*sqr(t_i[i])*sqrt(/(p_i[i]*sqr(t_sr)*sqrt(*x_i[i];
ppkr[i]: =(p_i[i]*x_i[i]);
tpkr[i]: =(t_i[i]*x_i[i]);
sa: =sa+a_sm[i];
sb: =sb+b_sm[i];
sppkr: =sppkr+ppkr[i];
stpkr: =stpkr+tpkr[i];
end;
l: =0;
for i: =1 to m do
begin
p_2: = py;
t_sr: =(ty+tz)/2;
repeat;
p1: = p_2;
p_sr: =(p1+p_2)/2;
p_pr: =p1/sppkr;
t_pr: =t_sr/stpkr;
a: =0;
b: =1;
repeat
f_a: =fz(a);
f_b: =fz(b);
c: =(a+b)/2;
f_c: =fz(c);
if(f_c*f_a)< 0 then b: =c
else a: =c;
c_st: =(a+b)/2;
until (abs(c_st-c)) z_sr: =c;
s: =0.03415*(ro*l)/(z_sr*t_sr);
pz: =py*exp(s);
p_2: = pz*exp(s);
dp: =pz-p1;
p_2: =pz;
until dp l: =l+100;
writeln ('l=', l, ' p=', p_2, ' z=', z_sr );
end;
end.

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
асем198566
21.02.2021 12:26

ответ: 2 ВАРИАНТ)

var

x:real;

begin

x:=(32+45)/(2+7);

writeln('x=',x:4:2);

readln;

end.

Объяснение:

1 ВАРИАНТ)

var

x:char;

begin

x:=(32+45)/(2+7);

writeln('x=',x:4:2);

readln;

end.

НЕ ПОДХОДИТ, Т.К. для x указан тип данных - символьный. var  x:char;

2 ВАРИАНТ)

var

x:real;

begin

x:=(32+45)/(2+7);

writeln('x=',x:4:2);

readln;

end.

ПОДХОДИТ, Т.К. всё верно.

3 ВАРИАНТ)

var

x:real;

begin

x:=(32+45)/(2+7);

end.

НЕ ПОДХОДИТ, Т.К. программа не делает вывод ответа.

4 ВАРИАНТ)

var

x:real;

begin

x:=(32+45)*(2+7);  

writeln('x=',x:4:2);

readln;

end.

НЕ ПОДХОДИТ, Т.К. допущена ошибка при записи уравнения. Указано умножение, вместо деления (32+45) * (2+7)

0,0(0 оценок)
Ответ:
крист34
21.04.2021 15:44
Or - "ИЛИ". Если одно из условий верно, то и все выражение принимает истину [ 0 or 1 = 1 ; 1 or 0 = 1; 1 or 1 = 0, 0 or 0 = 0], где 1 - истина, а 0 - ложь
у тебя условие 
If(k>9) or (k<14) then
условие k > 9 выполняется, а значит и все выражение верно
Нужно заменить "OR" на "AND" оператор "И". 
[ 1 and 1 = 1 ] при всех остальных - ложь

Вот код

var
k: integer;
begin
 readln(k);
  if k > 17 then
    Writeln('ваша оценка 5. Молодец!');
  if (k > 13) and (k < 18) then 
    Writeln('ваша оценка 4.'); 
if(k > 9) and (k < 14) then 
    Writeln('ваша оценка 3.'); 
if k < 10 then
    Writeln('ваша оценка 2.');
end.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота