При выполнении какой строки данной программы будет ошибка program delenie
Для того, чтобы найти ошибку, нужно поставить в соответствие друг другу все части условного оператора if и else.
Помним, что часть else относится к ближайшему if. При этом наличие части else не обязательно.
Кроме того, часто присутствует ошибка при вводе или выводе. Обязательно нужно проверить, та ли информация выводится на экран.
Особого внимания требует инициализация переменных.
Формат книги не позволяет рассмотреть все основные типы задач 2 части, рассмотрим лишь те, которые встречались на проверочных и экзаменационных работах последних двух лет.
На обработку поступает положительное целое число, не превышающее 10 9 . Нужно написать программу, которая выводит на экран сумму цифр этого числа, меньших 7. Если в числе нет цифр, меньших 7, требуется на экран вывести 0. Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
Бейсик
Python
INPUT N
WHILE N > 0
DIGIT = N MOD 10
END IF
WEND
Паскаль
Алгоритмический язык
begin
readln(N);
while N > 0 do
begin
digit := N mod 10;
N := N div 10;
end;
writeln(digit)
нач
цел N, digit, sum
ввод N
нц пока N > 0
все
кц
вывод digit
Си
int main()
int N, digit, sum;
while (N > 0)
if (digit < 7)
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 456.
2. Приведите пример такого трёхзначного числа, при вводе которого программа выдаёт верный ответ.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т.е. приведите правильный вариант строки.
Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Решение использует запись программы на Паскале. Допускается использование программы на любом из четырёх других языков.
1. Программа выведет число 4.
2. Пример числа, при вводе которого программа выдаёт верный ответ: 835.
Программа работает неправильно из-за неверной выводимой на экран переменной и неверного увеличения суммы. Соответственно, программа будет работать верно, если в числе старшая цифра (крайняя левая) равна сумме цифр, меньших 7.
3. В программе есть две ошибки.
Первая ошибка. Неверное увеличение суммы.
Строка с ошибкой:
sum := sum + digit;
Вторая ошибка. Неверный вывод ответа на экран.
Строка с ошибкой:
Для заданного положительного вещественного числа A необходимо найти максимальное целое число K, при котором выполняется неравенство
(при K = 0 сумма считается равной 0).
Для решения этой задачи ученик написал такую программу.
Бейсик
Python
DIM K AS INTEGER
INPUT A
WHILE S < A
WEND
PRINT K
Алгоритмический язык
Паскаль
нач
вещ a, s
цел k
ввод a
нц пока s
кц
вывод k
k: integer;
begin
read(a);
end;
write(k);
Си
int main()
double a, s;
int k;
return 0;
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 1.2.
2. Приведите пример числа, при вводе которого программа даст верный ответ.
3. Найдите в программе все ошибки (их может быть одна или несколько).
Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.
Обратите внимание: вам нужно исправить приведённую программу, а не написать свою. Вы можете только исправлять ошибочные строки; удалять строки или добавлять новые строки нельзя. Постарайтесь также не внести новые ошибки – за это оценка снижается.
Решение использует запись программы на Паскале. Допускается использование программы на других языках.
1. При вводе числа 1.2 программа выведет число 2.
2. Примеры чисел, при вводе которых программа выводит верный ответ: 1.6, 2.05.
Программа содержит две ошибки, одна из которых приводит к увеличению ответа, другая – к уменьшению.
В некоторых случаях эти ошибки компенсируют друг друга, и ответ оказывается правильным. Это происходит, если значение A попадает в один из следующих диапазонов: 1.5 < A < 1.83, 2 < A < 2.08.
3. Программа содержит две ошибки.
1) Неверная инициализация. Начальное значение S должно быть равно нулю.
В приведённом варианте вычисленная сумма оказывается на 1 больше правильного значения.
Строка с ошибкой:
2) Неверное определение ответа. Приведённая программа находит не максимальное K, при котором выполняется неравенство, а минимальное, при котором оно не выполняется, то есть увеличивает верное значение на 1.
Кроме того, использованный порядок действий в цикле (увеличение K после увеличения S) приводит к увеличению ещё на 1. Это можно было бы исправить, изменив порядок действий в цикле и уменьшив K после завершения цикла, но эти действия не разрешены по условию задачи.
Поэтому для исправления ошибки можно просто скорректировать значение при выводе.
1. Для отделения операторов друг от друга в языке Паскаль используют:
а) пробел; б) двоеточие; в) запятую; г) точку с запятой.
2. Из предложенных заголовков программы правильным является:
а) Program сумма; в) programm сумма;
б) programm summa; г) program summa.
3. Для вывода результатов в языке программирования Паскаль используют ключевое слово:
а) VAR; б) READ; в) BEGIN; г) WRITE.
4. Квадратный корень числа вычисляет функция:
а) SQRT (X); б) SQR (X); в) ABS (X); г) INT (X).
5. Конечное значение переменной У в результате выполнения следующих действий:
У: =5;
Х: =2;
У: =(У-2*Х) /2+Х
будет равно:
а) 0,5; б) 2; в) 2,5; г) 5.
6. В результате выполнения программы
program my_klass;
begin
write (25/2,5*2);
writeln (‘улыбок’);
end.
мы увидим на экране:
а) 5 улыбок; в) 5
улыбок;
б) 25 улыбок; г) 25
улыбок.
7. В данном фрагменте программы
ошибкой считают:
а) некорректное имя программы;
б) длинное имя переменной;
в) не определенное имя переменной;
г) запись арифметического выражения.
8. Значения одномерного массива задаются с помощью цикла:
for i:=1 to 5 do B[i]:= 5+i;
В результате значение В [3] будет равно:
а) 9; б) 8; в) 7; г) 6.
9. В результате выполнения фрагмента программы
for i:=1 to 10 do begin
if a[i]>0 then a[i]:=a[i]/2
else a[i]:=i;
end;
произойдет следующее:
а) положительные значения элементов массива увеличатся вдвое, а отрицательные заменятся значениями индекса;
б) положительные значения элементов массива уменьшатся вдвое, а отрицательные заменятся значениями индекса;
в) отрицательные значения элементов массива увеличатся вдвое, а положительные заменятся значениями индекса;
г) отрицательные значения элементов массива уменьшатся вдвое, а положительные заменятся значениями индекса.
10. В результате выполнения фрагмента программы
writeln (‘Новый массив’);
for i:=1 to 20 writeln (a[i]);
end.
произойдет следующее:
а) сформируется новый массив;
б) новый массив распечатается;
в) распечатаются только индексы;
г) сформируются только индексы.
пятый вопрос - верного ответа нет
шестой вопрос - либо опечатка и должна быть точка, либо верного ответа нет.
девятый вопрос - верного ответа нет (есть частично верный)
Ваша тема закрыта, почему это могло произойти? Возможно, Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
2. Написать программу, которая проверяет, является ли введенная с клавиатуры строка целым числом. |
Я думаю, что так =)
3. В спортивных соревнованиях участвовало 15 спортсменов. Для удобства каждому присвоили продуктовый номер (от одного до пятнадцати включительно). Известно,сколько баллов набрал каждый спортсмен. Составьте программу,определяющую лучший результат соревнований. |
3. В спортивных соревнованиях участвовало 15 спортсменов. Для удобства каждому присвоили продуктовый номер (от одного до пятнадцати включительно). Известно,сколько баллов набрал каждый спортсмен. Составьте программу,определяющую лучший результат соревнований. |
Я уверен, вы согласитесь со мной. что если
со страницей 534 мы встречаемся во второй главе, то первая глава должна быть невыносимо длинной.
- ШЕРЛОК ХОЛМС
Пожалуйста, помогите с олимпиадной задачей "Мультипалиндромы":
Непустая строка (слово) называется палиндромом, если оно читается одинаково как слева направо, так и наоборот.Слово N будем называть палиндромом, если его можно разбить на n частей, каждая из которых есть палиндром, но меньше чем на n палиндромов это слово не разбивается. Например, слово КОЛОСС можно разбить на 3 палиндрома: К, ОЛО, СС, на меньшее же число палиндромов это слово не разбивается.
Для заданного слова требуется определить наименьшее число палиндромов, на которые его можно разбить.
Каждый программист знает, что программу надо не только написать, иначе говоря - "заставить работать", а еще и отладить, т.е. заставить ее работать правильно . Для того, чтобы делать это быстро и эффективно, желательно научиться пользоваться встроенными в IDE средствами отладки программ.
Интегрированная интерактивная среда разработки программ Borland Pascal (IDE) включает в себя ряд средств, облегчающих разработку программ: автоматическое управление проектами, средств обеспечения модульной структуры программы, быструю компиляцию и простые в использовании оверлеи. Но, несмотря на все это, Ваша программа все равно может содержать ошибки, что не позволит ей корректно работать.
IDE для DOS Borland Pascal предоставляет вам инструментальные средства для отладки программ, то есть поиска и исправления ошибок. В этой статье описываются инструментальные средства и процедуры отладки программы в интегрированной среде Борланд Паскаль (большинство описанных возможностей применимо также к IDE FreePascal-я).
Отладка - это процесс поиска и исправления ошибок в программе, препятствующих корректной работе программы. Перед тем как углубиться в специфические средства IDE, которые помогают при отладке, дадим краткое описание видов ошибок, которые Вы можете наблюдать, и различного рода операций, которые будут использоваться для их поиска.
-
Ошибки этапа компиляции
Наиболее общей причиной ошибок этапа компиляции являются ошибки набора (опечатки), пропущенные точки с запятой, ссылки на неописанные переменные, передача неверного числа (или типа) параметров процедуры или функции и присваивание переменной значения неверного типа.
Ошибки этапа выполнения или семантические ошибки происходят, когда вы запускаете успешно откомпилированную программу, которая при выполнении делает что-то недопустимое. То есть, программа содержит допустимые операторы Паскаля, но при выполнении этих операторов что-то происходит неверно. Например, программа может пытаться открыть для ввода несуществующий файл или выполнить деление на ноль.
Логические ошибки - это ошибки проектирования и реализации программы. То есть, операторы, используемые в программе, допустимы, и что-то делают, но не то, что Вы предполагали. Эти ошибки часто трудно отследить, поскольку IDE не может найти их автоматически, как синтаксические и семантические ошибки. К счастью, IDE включает в себя также и средства отладки, помогающие вам найти логические ошибки.
Как пользоваться random?
если массив целочисленный
Как быстро научится пользоваться паскалем
Всем доброго времени суток! Подскажите пажалуйста как быстро выучить паскаль есле вообще.
Как пользоваться отладчиком?
Дайте ссылку на хороший материал или литературу
Как пользоваться отладчиком?
Вот код. В книжке написано: "поставьте точку останова Отладчика на оператор j=i и в цикле работы.
Основной смысл использования встроенного отладчика состоит в управляемом выполнении. Отслеживая выполнение каждой инструкции, Вы можете легко определить, какая часть Вашей программы вызывает проблемы. В отладчике предусмотрено пять основных механизмов управления выполнением программы, которые позволяют вам:
Само по себе выполнение программы по шагам может быть недостаточно полезным, разве что поможет найти то место, где что-то происходит совершенно неверно. Но управляемое выполнение дает Вам возможность проверять состояние программы и ее данных, например, отслеживать вывод программы и ее переменные.
Что такое шаг?
Когда Вы отлаживаете программу, наименьшим выполняемым элементом является строка. Это означает, что Вы можете управлять отладкой до уровня отдельной строки исходного кода программы. Поэтому, если на одной строке программы содержится несколько операторов Паскаля, эти операторы не могут быть отлажены индивидуально. С другой стороны, с целью отладки оператор можно разбить на несколько строк, каждая из которых будет выполняться за один шаг.
Все выполнение в отладчике, включая выполнение по шагам, трассировку и останов, основывается на строках. Подсвечивая строку, встроенный отладчик всегда сообщает Вам, какую строку он выполнит на следующем шаге (строка выполнения). Строка выполнения выводится цветом, отличным от нормального цвета. Благодаря этому Вы можете легко видеть, где находитесь.
Выполнение по шагам - это простейший способ выполнения программы по элементарным фрагментам. Выбор команды Run -> Step Over или нажатие клавиши F8 вызывает выполнение отладчиком всего кода в операторе, указанном строкой выполнения, включая любые вызываемые на ней процедуры или функции, пока управление не вернется обратно к вам. После этого строка выполнения указывает следующий выполняемый оператор.
Возьмем, например, следующую программу:
Если в окне редактирования Вы наберете этот текст и нажмете клавишу F8, то строка выполнения перемещается на оператор begin в начале основного цикла, поскольку это первое, что выполняется в программе. Второе нажатие клавиши F8 выполняет begin и перемещает строку выполнения вниз до оператора for на следующей строке. После этого нажатие F8 вызывает выполнение всего цикла for; на экран пользователя выводятся числа от -1 до -10, а строка выполнения перемещается к end.
Хотя функция Negate и вызывается 10 раз, строка выполнения никогда на нее не перемещается. Выполнение по шагам позволяет отладчику не показывать детали любых вызовов для отдельной строки. Выполнение по шагам вызывает выполнение всего цикла for сразу, поэтому Вы не сможете видеть изменения в ходе выполнения цикла. Если же Вы хотите видеть подробности выполнения цикла, внесите в пример следующее простое изменение:
Поскольку оператор Паскаля может занимать несколько строк, такая программа будет в точности эквивалентна предыдущей версии, и генерируемый код будет идентичен. Но поскольку оператор WriteLn теперь находится на отдельной строке, отладчик может интерпретировать его отдельно. Если теперь Вы будете нажимать клавишу F8, то увидите, что строка выполнения будет при выполнении цикла 10 раз возвращаться на WriteLn.
Трассировка программы во многом аналогична ее выполнению по шагам. Единственное исключение состоит в том, что когда встречается оператор вызова процедуры/функции, при трассировке эти процедуры и функции также выполняются по шагам, а при простом выполнении по шагам управление возвращается вам после завершения выполнения подпрограммы.
Например, чтобы выполнить трассировку кода в вышеприведенном примере, загрузите файл, затем выберите команду Run -> Trace Into или нажмите клавишу F7. Когда Вы в первый раз делаете это, управление перемещается на оператор begin основной программы. Повторное нажатие F7 снова перемещает строку управления на оператор for. После этого нажатие клавиши F7 трассирует вызов функции Negate - строка выполнения перемещается на оператор begin в блоке функции. Если Вы продолжаете нажимать F7, строка выполнения перемещается по функции, а затем, когда Вы дойдете до оператора end, возвращается к оператору вызова.
Формат программы влияет на поведение строки выполнения при трассировке, хотя и не в такой степени как при пошаговом выполнении. Если код сформатирован как в первоначальном варианте приведенного выше примера, то трассировка оператора for приводит к выполнению 10 раз функции Negate. Если вы разобьете оператор for на две строки, то трассировка оператора end функции возвращает строку выполнения: ту строку основной программы, которая будет выполняться следующей. Первые девять раз это снова будет вызов функции. В десятый раз строка выполнения перемещается на оператор end программы.
Трассировка или выполнение по шагам?
Пошаговое выполнение и трассировка выполняют одно и то же действие, кроме того случая, когда строка выполнения находится на строке вызова процедуры/функции, или когда выполняется оператор begin в начале программы или модуля, который использует другие модули.
Выполнение begin в блоке begin..end основной программы вызывает код инициализации для любого используемого в программе модуля в том порядке, который указывается в операторе uses программы. Аналогично, выполнение оператора begin в начале секции инициализации вызывает код инициализации для любых модулей, используемых в данном модуле. Выполнение по шагам и трассировка работает в этих случаях как и следовало ожидать - пошаговое выполнение begin выполняет всю инициализацию, возвращая управление на следующий оператор только после того, как все будет завершено; при трассировке выполняется трассировка кода инициализации.
Пошаговое выполнение и трассировка методов объектов
Если в программе используются объекты, отладчик ведет себя аналогично своему поведению в случае обычных процедур/функций. Пошаговое выполнение метода интерпретирует метод как один шаг, возвращая управление к отладчику после того как метод завершает выполнение. Трассировка метода загружает и выводит на экран код метода и трассирует его операторы.
Иногда, конечно, нежелательно выполнять по шагам всю программу только для того, чтобы добраться до того места, где возникает проблема. Отладчик дает Вам возможность выполнять сразу большой фрагмент программы до той точки, где вы хотите начать выполнение по шагам.
Чтобы задать в программе точку, до которой она должна выполняться, а затем остановиться, используйте команду Run -> GoTo Cursor или клавишу F4. (Этим вы сообщите отладчику, что не хотите выполнять программу по шагам, пока не достигнете заданной точки.) Установите курсор на той строке, где вы хотите возобновить управление отладкой, затем нажмите клавишу F4. Заметим, что Вы можете сделать это как в начале сеанса отладки, так и когда уже выполните часть программы по шагам или протрассируете.
Внимание: С использованием этой команды связана одна особенность: если Вы хотите, чтобы программа выполнилась до определенной строки, и устанавливаете курсор внутри модуля (Unit), то этого не произойдет, Вы просто получите ошибку Cannot Run a Unit, и этим все закончится, т.к. IDE понимает это действие, как приказ запустить модуль, чего делать нельзя. Требуется объяснить IDE, чего Вы от нее хотите примерно так: "Запусти основную программу, и только потом выполни все, до текущего положения курсора". Для этого надо зайти в меню Compile -> Primary File, указать системе основной файл (НЕ модуль) Вашего приложения, и только после этого установить курсор внутрь модуля, и нажать F4.
Казалось бы, что поменялось? А вот что: теперь IDE точно знает - основным файлом приложения является тот, который был установлен, как Primary File, следовательно, совершенно нет необходимости запускать модуль, достаточно запустить основной файл, и остановиться тогда, когда выполнение дойдет до нужной строки в модуле.
Все используемые переменные должны быть предварительно описаны с помощью ключевого слова var (внутри блока begin/end или, что обычно хуже, в разделе описаний вначале программы).
Отсутствующая ;
Очень частая ошибка у начинающих. Курсор, как правило, позиционируется в начале следующей строки.
Несовместимость типов при присваивании
Безболезненно можно присваивать только данные одного типа. Если данные – разных типов, то в редких случаях можно преобразовать данные одного типа в данные другого. Например, целое можно преобразовать в вещественное, а символ – в строку. Обратные преобразования не допускаются.
Чтобы не ошибаться в подобных простых случаях в Паскале есть следующая краткая форма объявления и инициализации переменной:
Отсутствие закрывающего апострофа литеральной строки
Закрыть апостроф надо на той же строке, где расположен открывающий апостроф
Ошибки расстановки запятых и апострофов при выводе строк и выражений
Слишком много запятых и апострофов рядом, потому начинающие часто путаются 🙂 Надо уяснить правила:
- запятые разделяют разные элементы вывода
- все, что находится в апострофах, будет выведено на экран без изменений
Ошибка ввода
Это – ошибка во время выполнения. Программа пытается преобразовать введенную строку в число, не может это сделать и завершается с ошибкой.
Аналогичный фрагмент в более современном и предпочтительном синтаксисе:
Ошибка неинициализированной переменной
Перед использованием любую переменную надо ввести или присвоить ей начальное значение. Это действие называется инициализацией переменной.
Деление на 0
Если во время выполнения программа выполнит деление на 0, то она завершится с ошибкой.
Можете написать ещё про какие-либо ошибки, буду благодарен.
1 ответ 1
Для целочисельного деления в паскале используйте div :
Если писать a/5 получается Real .
Всё ещё ищете ответ? Посмотрите другие вопросы с метками pascal или задайте свой вопрос.
Похожие
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
дизайн сайта / логотип © 2019 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2019.11.15.35459
Ответ
В строке с условиями не хватает скобок. Вот рабочий вариант вашей программы:
program _1;
var
x, y, x1, y1, x2, y2, x3, y3: real;
begin
write(‘Введите координаты точки(х,у)’);read(x, y);
write(‘Введите координаты первой вершины треугольника(х1,у1)’);
read(x1, y1);
write(‘Введите координаты второй вершины треугольника(х2,у2)’);
read(x2, y2);
write(‘Введите координаты третьей вершины треугольника(х3,у3)’);
read(x3, y3);
if (((x – x2) / (x2 – x1) – (y – y2) / (y2 – y1)) = 0)
then writeln(‘Точка с введенными вами координатами принадлежит треугольнику’) else writeln(‘Точка с введенными вами координатами не принадлежит треугольнику’);
end.
Тестовое решение:
Введите координаты точки(х,у)5.2 4.7
Введите координаты первой вершины треугольника(х1,у1)1.1 2.1
Введите координаты второй вершины треугольника(х2,у2)8.3 9.1
Введите координаты третьей вершины треугольника(х3,у3)0.1 10.5
Точка с введенными вами координатами не принадлежит треугольнику
Читайте также:
- Темп программа для компьютера
- Camera raw как открыть в фотошопе
- Как убрать строчку в браузере
- Lenovo ee boot optimizer что это за программа и нужна ли она
- 1с 8 скд функция не найдена