Вопрос задан 25.02.2019 в 21:29. Предмет Информатика. Спрашивает Петрова Алина.

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число

N, не превосходящее 10^9, и выводится количество цифр этого числа. Программист торопился и написал программу неправильно: var N: longint; count: integer; begin readln(N); count := 1; while N > 1 do begin count := count + 1; N := N div 10; end; writeln(count); end. Последовательно выполните следующее: Определите, что выведет программа при вводе числа 123. Укажите одно число, для которого программа выводит неверный результат. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки: а) выпишите строку, в которой сделана ошибка; б) укажите, как надо исправить ошибку - приведите правильный вариант строки. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, имеющую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
0 0
Перейти к ответам

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Власова Мария.
При вводе числа 123 программа выведет 3.
Для числа 2 программа выведет 2, что неверно

Ошибки в 5 и 6 строках. 
1) а) 5 строка (count := 1;)
    б) count := 0;
2) a) 6 строка (while N > 1 do begin)
    б) while N >= 1 do begin
0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Программа, предоставленная вами, предназначена для подсчета количества цифр в заданном натуральном числе. Давайте рассмотрим код и найдем ошибки.

Исходная программа:

```pascal var N: longint; count: integer;

begin readln(N); count := 1; while N > 1 do begin count := count + 1; N := N div 10; end; writeln(count); end. ```

1. Ошибки в программе: - Ошибка ввода: `N` объявлено как `longint`, но используется `readln`, что предполагает ввод целочисленных значений (`integer`). Это не является критической ошибкой, но лучше использовать соответствующий тип данных. Мы можем либо изменить объявление `N` на `integer`, либо использовать `readln(N: longint);`.

- Ошибка в логике: Условие `while N > 1` приведет к неверному результату. Например, для числа 123, программа завершится, когда `N` станет равным 0, и в итоге будет выведено 3 вместо 3 + 1 = 4, что является неверным.

2. Исправленный вариант: - Исправим тип ввода `N` и уберем ошибку в логике цикла.

```pascal var N: integer; // Меняем тип на integer count: integer;

begin readln(N); count := 0; // Изменяем начальное значение count на 0 while N > 0 do begin count := count + 1; N := N div 10; end; writeln(count); end. ```

Теперь программа должна корректно подсчитывать количество цифр в заданном числе.

0 0

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос