Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 27.11.2019
Сообщений: 3

Исправить ошибку в задаче

27.11.2019, 20:28. Показов 455. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задали в школе вот это. Пользователь вводит длину прямой и координаты точек и необходимо вычислить между ними расстояние... решил сделать проверку в случае чего, но выбивает ошибку, что "Program1.pas(11) : Операция 'or' не применима к типу real " . Что я делаю не так?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
program Distance;
  var
    x, a, b, c: real; 
  begin
    write('Введите x(длина) прямой:'); 
    readln(x);
    write('Введите координату x на которой будет находиться точка А:');
    readln(a);
    write('Введите координату x на которой будет находиться точка B:');
    readln(b);
    if a>x or b>x then
      writeln('Значение точки А или В не может быть больше длины самой прямой!')
    else
    begin
    if b>a then
      writeln('Значение точки B не может быть больше значения точки А!')
    else
      begin
      c:=x-(a+b);
      write('Расстояние между точками: ');
      write(c);
      writeln(' см');
      end;
      end;
  end.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.11.2019, 20:28
Ответы с готовыми решениями:

Исправьте ошибку в задаче на расстановку 8 ладей на шахматной доске
Условие задачи: Восемь ладей. Расположите на шахматной доске восемь ладей так, чтобы при этом каждая клетка оказалась либо занята, либо...

найти ошибку в задаче
Помогите!в чём ошибка и как исправить? УСЛОВИЕ: Дана строка S. Удалите из неё среднюю букву, если длина строки нечётная или две средних...

Помогите отыскать ошибку в задаче!
Здравствуйте! Попытался решить контрольную задачу в Pascal. Вроде как решил. Но при проверке выяснил, что задача решается не всегда, т.е....

1
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
28.11.2019, 00:45
У or приоритет больше чем у оператора сравнения. Поэтому оно сначала пытается посчитать (x or b). or и правда нельзя применять к real, отсюда и ошибка. Поставьте скобки.

Добавлено через 13 минут
А вообще по коду много чего стоит исправить:

1. Строчка с program уже более десяти лет не нужна.
2. Глобальные переменные ужасно медленные. По возможности надо использовать локальные, то есть var после begin. А если объявлять прямо при первом использовании - компилятор будет помогать искать некоторые ошибки в коде:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
begin
  write('Введите x(длина) прямой:');
  var x: real;
  readln(x);
  write('Введите координату x на которой будет находиться точка А:');
  var a: real;
  readln(a);
  write('Введите координату x на которой будет находиться точка B:');
  var b: real;
  readln(b);
  if (a > x) or (b > x) then
    writeln('Значение точки А или В не может быть больше длины самой прямой!')
    else
  begin
    if b > a then
      writeln('Значение точки B не может быть больше значения точки А!')
    else
    begin
      var c := x - (a + b);
      write('Расстояние между точками: ');
      write(c);
      writeln(' см');
    end;
  end;
end.
3. Вместо Read лучше использовать ReadИмяТипа, то есть ReadReal в вашем случае. Это позволить объявлять переменные и сразу читать в них, всё на 1 строчке.
А ещё эти ReadReal принимают опциональную строку, которую выведет перед вводом. Так можно ещё и Writeln с ним объединить:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
begin
  var x := ReadReal('Введите x(длина) прямой:');
  var a := ReadReal('Введите координату x на которой будет находиться точка А:');
  var b := ReadReal('Введите координату x на которой будет находиться точка B:');
  
  if (a > x) or (b > x) then
    Writeln('Значение точки А или В не может быть больше длины самой прямой!') else
  begin
    if b > a then
      Writeln('Значение точки B не может быть больше значения точки А!') else
    begin
      var c := x - (a + b);
      Write('Расстояние между точками: ');
      Write(c);
      Writeln(' см');
    end;
  end;
  
end.
Ну и ещё по мелочи, чтоб код чище выглядел:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
begin
  var x := ReadReal('Введите x(длина) прямой:');
  var a := ReadReal('Введите координату x на которой будет находиться точка А:');
  var b := ReadReal('Введите координату x на которой будет находиться точка B:');
  
  if (a > x) or (b > x) then
    Writeln('Значение точки А или В не может быть больше длины самой прямой!') else
  if b > a then
    Writeln('Значение точки B не может быть больше значения точки А!') else
    Writeln($'Расстояние между точками: {x - (a + b)} см'); // из за того что перед строкой стоит "$" - все выражения в {} заменит на их значения при выполнении
  
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.11.2019, 00:45
Помогаю со студенческими работами здесь

Помогите найти ошибку в задаче
Вот код программы uses crt; var s:string; st:char; i,k,x:integer; begin ClrScr; write('Введите строку:'); readln(s);

Не могу найти ошибку в задаче
Задача: Дана прямоугольная матрица. Сформировать из положительных элементов матрицы, расположенных в первой и последней строках, новый...

Не могу найти ошибку в задаче на циклы
Найти сумму ряда с заданной точностью E= 0,001, общий член которого an= n!/n^n var eps,c,an,q,d:REAL; i,n:integer; begin ...

Исправить ошибку, в задаче
Помогите исправить задачу. Программа которая заменит в строке символов, символ A на O. Program h1; var a:string; i:integer; ...

как исправить ошибку в задаче?
Помогите,пожалуйста исправить ошибку. Во второй процедуре нужно у каждого нечетного элемента найти из соседей по столбцу минимальный и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru