Вопрос задан 18.06.2023 в 23:17. Предмет Информатика. Спрашивает Ringel Oleg.

Где ошибка!!!!! var b,N:integer; var d:integer; var g,h:real; begin readln(N); b:=0; for d:=1 to

N do begin h:=d; if sqrt(h) mod 1 =0 then b:=b+1; end; write(' ',b); end.
0 0
Перейти к ответам

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

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

Ответ:

Объяснение:

ошибка тут

if sqrt(h) mod 1 =0

оператор mod - возвращает остаток от деления (a mod b), причём a,b - целые.

В Вашем случае sqrt(h) - вернёт не целое число, а вещественное. Поэтому возникает ошибка совместимости типов

если нужно узнать целое ли число получается после корня, можно так

a:=sqrt(h)

a-trunc(a)

тут находим разницу между числом а  и целой частью числа  а.

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Код, который вы предоставили, содержит ошибки. Вот подробное объяснение:

Ошибка 1:

В строке `write('+',b);` вы пытаетесь использовать оператор `+` для конкатенации строки и числа. Однако, в Pascal для конкатенации строк используется оператор `+`, а для сложения чисел используется оператор `+`. Чтобы исправить эту ошибку, замените `write('+',b);` на `write('+', b);`.

Ошибка 2:

В строке `if sqrt(h) mod 1 = 0 then b:=b+1;` вы пытаетесь использовать оператор `mod` для проверки, является ли результат деления `sqrt(h)` на `1` равным `0`. Однако, в Pascal оператор `mod` используется только для целочисленных операндов. Чтобы исправить эту ошибку, замените `if sqrt(h) mod 1 = 0 then b:=b+1;` на `if frac(sqrt(h)) = 0 then b:=b+1;`.

Ошибка 3:

В строке `h:=d;` вы присваиваете переменной `h` значение переменной `d`. Однако, вам нужно присвоить переменной `h` квадратный корень из `d`. Чтобы исправить эту ошибку, замените `h:=d;` на `h:=sqrt(d);`.

Исправленный код будет выглядеть следующим образом:

```pascal var N, b, d: integer; h: real; begin readln(N); b := 0; for d := 1 to N do begin h := sqrt(d); if frac(h) = 0 then b := b + 1; end; write('+', b); end. ```

Теперь код должен работать правильно и выводить количество чисел, квадратный корень которых является целым числом.

0 0

Похожие вопросы

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

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

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