М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации

Скажите почему в этом коде на Pascal ответ равен 0 var a:array[1..10] of integer;
i,p:integer;
begin
randomize;
for i:=1 to 10 do
begin
a[i]:=random(50);
writeln(a[i]);
p:=p*a[i];
if a[i] mod 5 =0 then p:=p*a[i];
end;
writeln('p' ,p);
end.

👇
Ответ:
Sasha7749
Sasha7749
26.10.2020

Решение представлено во вложении.

Язык: Pascal

Пояснение: Если я правильно всё понимаю, то твоя программа должна подсчитывать произведение элементов массива кратных 5.

Так вот, во-первых - для начала необходимо проинициализировать переменную p в самом начале программы:

p:=1; // единица, т.к если мы сюда присвоим ноль, то произведение всегда будет равно нулю.

Во-вторых: я не очень понимаю, зачем нужна строчка №9:

p:=p*a[i] // Она у тебя написана вне конструкции if. Поэтому получается так, что ты считаешь произведение всех элементов массива, а не только кратных 5. К тому же, если найдётся элемент кратный пяти, то p домножится на него ещё раз.

Почему p = 0?

P могла быть равна 0 из-за строчки №9. В массиве мог сгенерироваться элемент с нулевым значением. А т.к у тебя было лишнее присвоение вне конструкции if, то твоё произведение было бы равно нулю.

А теперь реальная причина, по которой p = 0.

Компилятор выделил память для переменной p, но т.к ты её не инициализировал, то в этом выделенном под p участке памяти могло быть что угодно. Чтобы избежать различных конфликтов, если ты самостоятельно явно не инициализируешь переменную, то компилятор её обнуляет сам. Что и произошло в твоём случае. У тебя p просто не могло быть равным другому числу, потому что 0*(любое число) = 0.

Я исправил твою программу, теперь она работает правильно. Строки, которые я перенёс в другую часть программы или строки, содержащие ошибки, я закомментировал, так что ты можешь сравнить изначальную версию программы и исправленную.

Примечание: т.к мы инициализировали в начале программы p и присвоили значение 1, то необходимо учесть то, что в массиве может не оказаться ни одного элемента, который был бы кратен 5. Шанс очень мал, но он есть. Тогда p так и останется = 1 и программа выдаст ложный результат. Учти этот момент и пропиши необходимые условия.

Какие такие необходимые условия?

Давай подумаем, а может ли p = 1 при том условии, что у нас есть хотя бы один элемент, который кратен 5? Конечно нет. Так вот, необходимо сделать проверку: if (p = 1) then write('Не обнаружено ни одного элемента кратного 5!', #10) else write(#10, 'Произведение элементов массива кратных 5 = ', p);

Также необходимо обговорить тот момент, что p всё же может оказаться равным 0. Это произойдёт если сгенерируется хотя бы один элемент с нулевым значением. Тогда у нас выполнится условие (0 mod 5 = 0) и p станет равным 0.

Если мы хотим избежать этого случая, то необходимо исключить генерацию элементов с нулевым значением. Хотя свойство делимости определено на всём множестве целых чисел, обычно рассматривается лишь делимость натуральных чисел. Так что, я думаю это будет логичным решением.

Я попытался написать всё подробно и понятно, но если возникнут вопросы, ты всегда можешь их задать.


Скажите почему в этом коде на Pascal ответ равен 0 var a:array[1..10] of integer; i,p:integer; begin
4,4(85 оценок)
Открыть все ответы
Ответ:
gleb090902
gleb090902
26.10.2020
9 килобайт = 9216 байт.
Зная информационный объём рассказа и количество страниц, найдём информационный объём одной страницы. В условии сказано, что каждый символ кодируется 8 битами, т.е. одним байтом. Также мы знаем количество символов в одной строке. Умножив 1 байт на количество символов в строке, найдём информационный объём одной строки. И, наконец, разделив информационный объём страницы на информационный объём строки, найдём количество строк на странице.

1) 9216 : 6 = 1536 (байт) – информационный объём одной страницы.

2) 1 × 48 = 48 (байт) – информационный объём одной строки.

3) 1536 : 48 = 32 (стр.) – количество строк на каждой странице.

ответ: на каждой странице помещается 32 строки.

ПРАВИЛЬНЫЙ ОТВЕТ – 3) 32
4,6(18 оценок)
Ответ:
sea131281
sea131281
26.10.2020
9 килобайт = 9216 байт.
Зная информационный объём рассказа и количество страниц, найдём информационный объём одной страницы. В условии сказано, что каждый символ кодируется 8 битами, т.е. одним байтом. Также мы знаем количество символов в одной строке. Умножив 1 байт на количество символов в строке, найдём информационный объём одной строки. И, наконец, разделив информационный объём страницы на информационный объём строки, найдём количество строк на странице.

1) 9216 : 6 = 1536 (байт) – информационный объём одной страницы.

2) 1 × 48 = 48 (байт) – информационный объём одной строки.

3) 1536 : 48 = 32 (стр.) – количество строк на каждой странице.

ответ: на каждой странице помещается 32 строки.

ПРАВИЛЬНЫЙ ОТВЕТ – 3) 32
4,6(44 оценок)
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ