М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
панда1341
панда1341
14.06.2020 15:27 •  Информатика

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

👇
Ответ:
www152
www152
14.06.2020

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

if (P else F:=false;

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

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

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

4,5(66 оценок)
Открыть все ответы
Ответ:
SteveDog86
SteveDog86
14.06.2020
program parampampam; 
uses crt; 
var 
i: integer; {счетчик} 
s: integer; 
begin 
clrscr; {очистка экрана} 
writeln ('Программа выводит числа от 1 до 99, сумма цифр которых равна числу S'); 
writeln ('Введите число S, от 0 до 18: '); 
{ввод числа S с проверкой на корректность} 
repeat 
readln (s); 
if (s>18) or (s<0) then 
writeln ('Неверный ввод. Повторите') 
until (s<=18) and (s>=0); 
{вывод нужных чисел на экран (цикл с предусловием)} 
for i := 1 to 99 do 
if ((i div 10) + (i mod 10) = s) then {div дает целую часть, mod - остаток от деления} 
write (i, ' '); 
repeat until keypressed; {пустой цикл для задержки экрана до нажатия клавиши} 
end.
4,5(81 оценок)
Ответ:
nikita2455
nikita2455
14.06.2020

Объяснение:

1. x = 0; y = 4

Цикл по i от 3 до 6

1) i = 3

x = x + 1 = 0 + 1 = 1

y = y + 2 = 4 + 2 = 6

2) i = 4

x = x + 1 = 1 + 1 = 2

y = y + 2 = 6 + 2 = 8

3) i = 5

x = x + 1 = 2 + 1 = 3

y = y + 2 = 8 + 2 = 10

4) i = 6

x = x + 1 = 3 + 1 = 4

y = y + 2 = 10 + 2 = 12

Конец цикла

y = y - x = 12 - 4 = 8

x = x + y = 4 + 8 = 12

Вывод y = 8

2. x = 0; y = 2

Цикл, пока y < 15

1) x = x + 1 = 0 + 1 = 1

y = y + 2 = 2 + 2 = 4 < 15

2) x = 1 + 1 = 2

y = 4 + 2 = 6 < 15

3) x = 2 + 1 = 3

y = 6 + 2 = 8 < 15

4) x = 3 + 1 = 4

y = 8 + 2 = 10 < 15

5) x = 4 + 1 = 5

y = 10 + 2 = 12 < 15

6) x = 5 + 1 = 6

y = 12 + 2 = 14 < 15

7) x = 6 + 1 = 7

y = 14 + 2 = 16 > 15

Конец цикла

y = y - x = 16 - 7 = 9

x = x + y = 7 + 9 = 16

Вывод y = 9

3. x = 0; y = 5

Цикл с постусловием

1) x = x + 1 = 0 + 1 = 1

y = y + 2 = 5 + 2 = 7

Выйти из цикла, если y > 15

y = 7 < 15

2) x = 1 + 1 = 2

y = 7 + 2 = 9 < 15

3) x = 2 + 1 = 3

y = 9 + 2 = 11 < 15

4) x = 3 + 1 = 4

y = 11 + 2 = 13 < 15

5) x = 4 + 1 = 5

y = 13 + 2 = 15

15 не больше 15, поэтому продолжаем.

6) x = 5 + 1 = 6

y = 15 + 2 = 17 > 15

Выход из цикла

y = y - x = 17 - 6 = 11

x = x + y = 6 + 11 = 17

Вывод y = 11

4,4(100 оценок)
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ