Язык: ПаскальПочему при f=true не выводится то,что записано в условии?const n=3;var
Язык: Паскаль
Почему при f=true не выводится то,что записано в условии?
const n=3;
var C: array[1..n] of real;
A: array[1..n,1..n] of real;
X: array[1..n] of real;
F:boolean;
P,T:real;
i,j:integer;
begin
writeln('Vvedite matricu A:');
for i:=1 to n do
for j:=1 to n do
read(A[i,j]);
writeln('Vvedite massiv C:');
for i:=1 to n do
read(C[i]);
writeln('Vvedite znacheniya P,T:');
write('P=');
readln(P);
write('T=');
read(T);
x[i]:=0;
F:=false;
repeat
if (P else F:=false;
until (igt;n) or (F=false);
if F then
begin
for i:=1 to n do
for j:=1 to n do
x[i]:=x[i]+a[i,j];
writeln('X[',i,']=',x[i]);
end
else writeln('elementy massiva C ne lezhat v intervale P,T');
end.
Во-первых хотелось бы узнать, почему у тебя в 24 строке странноватая запись:
if (P else F:=false;
Тут неясно, к чему написана скобка, а также неясно, куда затерялся синтаксический then.
Во-вторых - почему в той же строке сопоставляешь тип real с типом boolean? На это бранится даже компилятор.
В-третьих - если мы опустим эти недочёты и вникнем в метод, то поймём, что ты зациклил условие проверки P на истинность до тех пор, пока i не будет больше n либо пока F не станет брехнёю. Но здесь подвох в чём? В этом цикле ты не производишь никаких деяний над операторами в условии, не считая как присваивание булевой переменной F значение false, чему оно и равно вначале. То есть можно сказать, что у тебя тут происходит неисчерпаемое зацикливание. Скорее всего конкретно потому у тебя не выводится массив, потому что компилятор не в состоянии дойти до строки вывода. Чтобы хотя бы часть условия выполнилась, для тебя необходимо в условии if..then..else присваивать F не false, а true. Но это только в том случае, если ты исправишь конструкцию условия.
-
Вопросы ответы
Статьи
Информатика
Статьи
Математика.
Разные вопросы.
Разные вопросы.
Математика.
Разные вопросы.
Математика.
Физика.
Геометрия.
Разные вопросы.
Обществознание.