Язык: ПаскальПочему при 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.

Задать свой вопрос
1 ответ

Во-первых хотелось бы узнать, почему у тебя в 24 строке странноватая запись:

if (P else F:=false;

Тут неясно, к чему написана скобка, а также неясно, куда затерялся синтаксический then.

Во-вторых - почему в той же строке сопоставляешь тип real с типом boolean? На это бранится даже компилятор.

В-третьих - если мы опустим эти недочёты и вникнем в метод, то поймём, что ты зациклил условие проверки P на истинность до тех пор, пока i не будет больше n либо пока F не станет брехнёю. Но здесь подвох в чём? В этом цикле ты не производишь никаких деяний над операторами в условии, не считая как присваивание булевой переменной F значение false, чему оно и равно вначале. То есть можно сказать, что у тебя тут происходит неисчерпаемое зацикливание. Скорее всего конкретно потому у тебя не выводится массив, потому что компилятор не в состоянии дойти до строки вывода. Чтобы хотя бы часть условия выполнилась, для тебя необходимо в условии if..then..else присваивать F не false, а true. Но это только в том случае, если ты исправишь конструкцию условия.

Zhenja Elfimova
Я так разумею, у тебя программка выдаёт elementy massiva C ne lezhat v intervale P,T?
Ярослава
Если не входят,то да,если входят обязан выдавать значения х
Злата Хаева
Но заместо этого просто заканчивается программка
Виолетта Зенковская
У тебя вводится 3 элемента массива C. Но в условии ты проверяешь только 2 элемента, причём эти элементы одинаковы. Какова логика? Ты используешь для проверки индекс i - тот, который использовался в цикле, то есть после цикла он проработал и остался тройкой.
Илья Номероцкий
Так, исправил код.
Арина Силикова
https://pastebin.com/Vpq4saE2
Милена Киченкова
я так понимаю inc(i) то же самое,что i:=i+1?
Евгения Нурбаганова
Да, просто мне такая запись удобнее.
Шурик Сивоконев
Отпишись, если всё превосходно работает.
Любовь Бокаляр
Все работает ;3 Спасибо для тебя громадное! А то много медли я на нахождение оплошности убил)
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт