2 Создайте программу, которая вычисляет сумму положительных элементов заданного массива в строке и присваивает ответ массиву A [5]. Элементы массива - действительные числа. B[5.5] 3 Создайте программу, которая вычисляет произведение отрицательных элементов данного массива в столбце. Элементы массива - действительные числа. A [12.6]
4 Создайте программу, которая вычисляет произведение положительных элементов главной диагонали из заданного массива. Элементы массива - целые числа. C [5.5]
(см. объяснение)
Объяснение:
Странно вы как-то пишете. Во-первых, где randomize; Во-вторых, зачем в паскале писать random(33)-14, если можно и нужно random(-14; 18) (обратите внимание, что в этом случае второе число включается, то есть 18 будет тоже допустимо). В-третьих, Вы используете динамические массивы вместо обычных, что странно, учитывая, что свойства, которые они дают Вы полноценно не используете (никак кроме setLength, а ведь с ними задача решается в пару строк кода). В четвертых, заглавными буквами принято обозначать константы, а не переменные. В пятых... Короче говоря, вопросов много.
Судя по коду, Вы создаете массив случайных чисел, выводите его, затем пытаетесь в массив B положить положительные элементы, а в C неположительные. После этого выводите массивы C и B. При этом у Вас есть зачем-то J (которую вы то большой, то маленькой пишете, что очень грубо). То есть, сказав, что Ваш код генерирует случайные числа и распределяет по массивам, в массив B-положительные, а в массив С-отрицательные, Вы говорите неверно. У Вас еще есть ноль. И вы тоже его куда-то да распределяете (подсказка: в массив C). Будем считать, что Вы просто неверно выразились и примем, что в C ноль класть нужно.
У Вас возникает проблема в том, что Вы сталкиваетесь с лишними нулями. Но где у Вас гарантия, что в массиве a не будет естественного нуля? Ее нет. Тогда как вы хотите отличить нули естественные, от появившихся по ошибке? Значит Ваша мысль неверна, то есть убрать нули нельзя. То есть такой мысли по идеи не должно было быть вообще. Сейчас не важно, что в коде написан бред и даже неважно то, что Ваша проблема может возникнуть только у того, кто вообще в паскале не разбирается. Просто задумайтесь, почему одна j? Не лучше ли просто ввести два счетчика для массивов B и C по отдельности и как только вы добавили один элемент соответствующий счетчик увеличить? Это единственно правильный случай, если принимать Ваш код за основу и стараться внести в него минимальные правки.
Не буду больше тянуть и приведу поправленный код.
const N = 10;
var i, j, k, p:integer;
a, b, c: array [1..N] of integer;
begin
k:= 1;
p:= 1;
randomize;
print('Массив a:');
for i:= 1 to N do
begin
a[i]:= random(-14, 18);
print(a[i]);
end;
writeln;
for i:= 1 to N do
begin
if(a[i] > 0) then
begin
b[k]:= a[i];
k:= k + 1;
end else
begin
c[p]:= a[i];
p:= p + 1;
end;
end;
k:= k - 1;
p:= p - 1;
writeln;
print('Массив c:');
for i:= 1 to p do
begin
print(c[i]);
end;
writeln;
print('Массив b:');
for i:= 1 to k do
print(b[i]);
readln;
end.
Еще раз подчеркну, что задачу нужно решать так:
##
'Введите N:'.Print;
var a:= ArrRandom(ReadInteger, -14, 18);
var b:= a.Where(x->x>0);
var c:= a.Where(x->x<=0);
'Массив a:'.Print; a.Println;
'Массив b:'.Print; b.Println;
'Массив c:'.Print; c.Println;
Теперь можно с чистой совестью сказать, что...
Задание выполнено!
вот основное
Объяснение:
Середина 50-х гг. характеризуется стремительным прогрессом в области программирования. Роль программирования в машинных кодах стала уменьшаться, стали появляться языки программирования нового типа, выступающие в роли посредника между машинами и программистами. Наступило время второго и третьего поколений языков программирования.
С середины 50-х г. XX в. начали создавать первые языки программирования высокого уровня (high-level programming languages). Эти языки не были привязаны к определенному типу ЭВМ (машинонезависимы). Для каждого из них были разработаны собственные компиляторы. Компиляция — трансляция программы, составленной на исходном языке высокого уровня, в эквивалентную программу на низкоуровневом языке, близком машинному коду (абсолютный код, объектный модуль, иногда язык ассемблера).
Достоинства языков программирования высокого уровня:
Алфавит языка значительно шире машинного, что делает его гораздо более выразительным и существенно повышает наглядность и понятность текста;
Набор операций, допустимых для использования, не зависит от набора машинных операций, а выбирается из соображений удобства формулирования алгоритмов решения задач определенного класса;
Конструкции операторов задаются в удобном для человека виде;
Поддерживается широкий набор типов данных.
Недостатком языков высокого уровня является больший размер программ по сравнению с программами на языке низкого уровня. Поэтому в основном языки высокого уровня используются для разработок программного обеспечения компьютеров и устройств, которые имеют большой объем памяти. А разные подвиды ассемблера применяются для программирования других устройств, где критичным является размер программы.
Неизвестно, насколько бы ускорилось развитие программирования, если бы наработки Цузе стали доступны другим учёным в конце 40-х годов, но на практике с развитием компьютерной техники сначала получил распространение машинный язык. С его программист мог задавать команды, оперируя с ячейками памяти, полностью используя возможности машины. Суть этого языка — набор кодов, обязательно понятных процессору, к которому обращаются. Части («слова») этого языка называются инструкциями, каждая из которых представляет собой одно элементарное действие для центрального процессора, как, например, считывание информации из ячейки памяти. Лишь при понимании устройства компьютерного оборудования и знания этих целочисленных кодов можно было непосредственно управлять процессором. Тогда ещё компьютеры были простыми вычислительными машинами, применяемыми для различных математических расчётов. Но они развивались, а использование большинства компьютеров на уровне машинного языка затруднительно, особенно сложным было чтение и модификация подобных программ, что усугублялось использованием абсолютной адресации памяти[3]. Поэтому со временем от использования машинных кодов пришлось отказаться.
Например, для организации чтения блока данных с гибкого диска программист может использовать 16 различных команд, каждая из которых требует 13 параметров, таких как номер блока на диске, номер сектора на дорожке и т. п. Когда выполнение операции с диском завершается, контроллер возвращает 23 значения, отражающие наличие и типы ошибок, которые необходимо анализировать. Уже одно обращение к процессору громоздко, а анализ ошибок и вовсе представляется невообразимым, особенно, если не именно с этим процессором приходиться работать. Таким образом, набор команд машинного языка сильно зависит от типа процессора.