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

Ответы 6

  • https://pastebin.com/Vpq4saE2
    • Автор:

      pope97
    • 6 лет назад
    • 0
  • я так понимаю inc(i) то же самое,что i:=i+1?
    • Автор:

      marquis
    • 6 лет назад
    • 0
  • Да, просто мне такая запись удобнее.
  • Отпишись, если всё хорошо работает.
  • Все работает ;3 Спасибо тебе огромное! А то немало времени я на нахождение ошибки убил)
    • Автор:

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

    if (P else F:=false;

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

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

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

    • Автор:

      méndez1
    • 6 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years