
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число
A, не превосходящее , и выводится произведение его цифр. Программист торопился и написал программу неправильно. Паскаль:var A, pr : longint;beginreadln(A);pr := 0;while A >= 10 dobeginpr := pr * (A mod 10);A := A div 10;end;writeln (pr);end.Последовательно выполните следующее.1. Напишите, что выведет эта программа при вводе числа 123.2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:а) выпишите строку, в которой сделана ошибка;б) укажите, как исправить ошибку: приведите правильный вариант строки.Обратите внимание на то, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.

Ответы на вопрос

Ответ:
1. 6.
2. 1) а) pr := 0; б) pr := 1;
2) а) while A >= 10 do б) while A <> 0 do
Объяснение:
1. 1*2*3=6
2. 1) Из-за "pr := 0" в строке "pr := pr * (A mod 10);" выражение будет всегда равняться нулю.
2) Из-за "while A >= 10 do" программа не будет воспринимать первую цифру введенного числа.



Давайте рассмотрим программу по шагам и найдем ошибки:
pascalvar A, pr : longint; begin readln(A); pr := 0; while A >= 10 do begin pr := pr * (A mod 10); A := A div 10; end; writeln (pr); end.
- Напишите, что выведет эта программа при вводе числа 123.
Программа выведет "0", даже если вводится число 123. Это происходит из-за ошибки в строке pr := pr * (A mod 10);
, где pr
инициализируется значением 0 и затем умножается на каждую цифру числа, которая также равна 0, итоговое произведение всегда остается равным 0.
Найдите все ошибки в этой программе:
а) Ошибка находится в строке
pr := pr * (A mod 10);
, где произведениеpr
умножается на 0 при каждой итерации, что приводит к неправильному результату.б) Для исправления этой ошибки замените строку
pr := pr * (A mod 10);
следующей строкой:pascalpr := pr + (A mod 10);
Теперь программа будет корректно считывать число 123 и выводить произведение его цифр, то есть 6.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili