Регистрация: 05.06.2016
Сообщений: 6
|
Ошибка сортировки
Вот код программы, нужно значение С сортировать в порядке возрастания, подскажите, что я делаю не так...
Код:
Program 1;
Var {объявление переменных}
i,j,pr,pr2,pr1,n:integer;
st, st2,st1,l:string;
mas:array[1..1000,1..1000] of real;
err:array[1..1000] of string;
z,s,x,p,a,b,c,t,y,v,w,e,f,g:real;
Begin
e:= 2.71828182846;
repeat
repeat
writeln('Введите количество пар чисел для подсчёта вычислений');
readln(st1);
val(st1,n,pr1); {проверка: является ли число вычислений числом}
if pr1 <> 0 then writeln('Это не число, введите число')
until pr1 = 0;
Writeln('Введите числа');
for i:=1 to n do
begin
repeat
writeln('Введите x',i);
readln(st);
val(st, w, pr); {проверка: является ли х числом}
if pr <> 0 then writeln('Это не число, введите число')
else mas[i,1]:= w;
until pr = 0;
repeat
writeln('Введите p',i);
readln(st2);
val(st2, v, pr2); {проверка: является ли p числом}
if pr2 <> 0 then writeln('Это не число, введите число')
else mas[i,2]:= v;
until pr2 = 0;
end;
for i:=1 to n-1 do//смотрим элементы массива с первого
for j:=i+1 to n do//сравниваем с элементами, которые впереди
if mas[i,3]>mas[j,3] then//если нашли впереди меньше,
begin
z:=mas[i,3];//то с помощью переменной-буфера
mas[i,3]:=mas[j,3];//меняем элементы местами
mas[j,3]:=z;
end;
for i:=1 to n do
begin
x:=mas[i,1]; {присвоение значения элемента массива x}
p:=mas[i,2]; {присвоение значения элемента массива p}
mas[i,3]:=0;
f:= (sqrt(power(x,3)) + (power(x,2)) + 4.5); {присвоение значению f функции логарифма}
g:= (ln(power(x,3))+abs(power(x,4)-(2*p))); {присвоение значению g функцию подкоренного выражения}
if p <> 0 {проверка значения p под степенью -2}
then
begin
if f > 0 {проверка логарифма}
then
begin
if g > 0 {проверка корня}
then
begin
a:= sin(sqrt(power(x,3)) + (power(x,2)) + 4.5); {нахождение функции а}
b:= power(x,2) - exp(ln(power(x,3))+abs(power(x,4)-(2*p))); {нахождение функции b}
if b<>0 {проверка знаменателя}
then
begin
c:=a/b; {вычисление искомой функции с}
mas[i,3]:=c; {присвоение значения элемента массива c}
end
else err[i]:='На 0 делить нельзя'
end
else err[i]:='Корень не можеть быть отрицательным';
end
else err[i]:='Логарифм не можеть быть отрицательным';
end
else err[i]:='0 не возводится в степень -2';
end;
writeln('| ','X',' | ', 'P', ' | ','C', ' | ', 'ПРИМЕЧАНИЕ'); {вывод шапки таблицы}
for i:=1 to n do
begin
write('|',mas[i,1]:4,' | ',mas[i,2]:4,' | ',mas[i,3],' | ', err[i]);{вывод результатов}
writeln;
end;
repeat
writeln('Повторить? ДА - 1, НЕТ - 0'); {вопроc к пользователю на повторный запуск программы}
readln(l);
until (l='0') or (l='1');
until l='0';
end.
|