|
2 / 2 / 0 Регистрация: 03.02.2012 Сообщений: 58 |
|
|
1 |
|
Найти произведение всех элементов массива07.04.2012, 17:57. Показов 5943. Ответов 4
1. Найти произведение всех элементов массива.
0 |
|
Севак любитель покушать 686 / 640 / 248 Регистрация: 25.09.2011 Сообщений: 1,313 |
||||||||
|
07.04.2012, 19:04 |
2 |
|||||||
|
Drakula12,
1 |
|
2 / 2 / 0 Регистрация: 03.02.2012 Сообщений: 58 |
|
|
07.04.2012, 21:45 [ТС] |
3 |
|
спасибо, а можно вторую задачу по-подробнее?
0 |
|
Севак любитель покушать 686 / 640 / 248 Регистрация: 25.09.2011 Сообщений: 1,313 |
||||
|
07.04.2012, 21:49 |
4 |
|||
|
Drakula12, можно,
1 |
|
2 / 2 / 0 Регистрация: 03.02.2012 Сообщений: 58 |
|
|
07.04.2012, 21:55 [ТС] |
5 |
|
спасибо))
0 |
Сумма и произведение элементов массива
Просмотров 10.7к. Обновлено 15 октября 2021
Заполнить массив вещественных чисел вводом с клавиатуры. Посчитать сумму и произведение элементов массива. Вывести на экран сам массив, полученные сумму и произведение его элементов.
- Присвоить переменной, в которой будет храниться сумма, значение 0, а переменной для произведения — значение 1.
- В цикле увеличивая индекс массива от начала до конца
- считывать с клавиатуры число и записывать его в текущую ячейку массива,
- увеличивать переменную с суммой на введенное число.
- умножать переменную с произведением на введенное число.
- В цикле увеличивая индекс массива от начала до конца вывести все элементы массива.
- Вывести сумму и произведение.
Pascal
сумма элементов массива паскаль
const N = 10;
var
a: array[1..N] of real;
sum, mult: real;
i: integer;
begin
sum := 0;
mult := 1;
for i:=1 to N do begin
read(a[i]);
sum := sum + a[i];
mult := mult * a[i];
end;
for i:=1 to N do write(a[i]:5:2);
writeln;
writeln(sum:5:2);
writeln(mult:5:2);
end.
4.3 2.3 4.5 3.3 8.3 1.2 8.3 9.1 2.3 3.6
4.30 2.30 4.50 3.30 8.30 1.20 8.30 9.10 2.30 3.60
47.20
914812.11
Язык Си
#include
#define N 10main() {
float a[10], sum, mult;
int i;
sum = 0;
mult = 1;
for (i=0; i < 10; i++) {
scanf("%f", &a[i]);
sum += a[i];
mult *= a[i];
}
for (i=0; i < 10; i++) {
printf("%.2f ", a[i]);
}
printf("n%.2fn", sum);
printf("%.2fn", mult);
}
Python
сумма элементов массива python (питон)
a = [0]*10
s = 0
m = 1
for i in range(10):
a[i] = float(input())
s += a[i]
m *= a[i]
print(a)
print(s)
print('%.4f'%m)
КуМир
алг сумма элементов
нач
цел N=10
вещ таб a[1:N]
вещ sum, mult
цел i
sum := 0
mult := 1
нц для i от 1 до N
ввод a[i]
sum := sum + a[i]
mult := mult * a[i]
кц
нц для i от 1 до N
вывод a[i], " "
кц
вывод нс, sum, нс
вывод mult
кон
Basic-256
dim a(10)
sum = 0
mult = 1
for i=0 to 9
input a[i]
sum = sum + a[i]
mult = mult * a[i]
next ifor i=0 to 9
print a[i] + " ";
next i
print sum
print mult
program kvad;
uses crt;
var a:array[1..100]of Integer;
i,n,sum,proz,sumkv,sum6,sumz,k1,k2:Integer;
begin
proz:=1;
ClrScr;
Write('Введите размер массива,n=');
Readln(n);
Writeln('Введите значения элементов массива:');
for i:=1 to n do
begin
Write('a[',i,']=');
Readln(a[i]);
end;
Writeln('Заданный массив:');
for i:=1 to n do Write(a[i],' ');
Writeln;
Write('k1=');
Readln(k1);
Write('k2=');
Readln(k2);
for i:=1 to n do
begin
sum:=sum+a[i];
proz:=proz*a[i];
sumkv:=sumkv+sqr(a[i]);
if i<=6 then sum6:=sum6+a[i];
if i in [k1..k2] then sumz:=sumz+a[i];
end;
Writeln('Сумма всех элементов:',sum);
Writeln('Произведение всех элементов массива:',proz);
Writeln('Сумма квадратов всех элементов массива:',sumkv);
Writeln('Cумма шести первых элементов массива:',sum6);
Writeln('Cумма элементов массива с k1-гo по k2-й:',sumz);
Readln;
end.
Сегодня мы с вами наконец-то начинаем новую тему — одномерные массивы.
Одномерные массивы. Определение.
Одномерный массив — это фиксированное количество элементов одного и того же типа, объединенных одним именем, где каждый элемент имеет свой номер. Обращение к элементам массива осуществляется с помощью указания имени массива и номеров элементов.
var a : array [1..N] of integer; //или type arr = array[1..N] of integer; var a: arr;
Между именем типа и именем переменной ставится знак «двоеточие». Array — служебное слово (в переводе с английского означает «массив», «набор»); [1..N] — в квадратных скобках указывается номер первого элемента, затем, после двух точек, номер последнего элемента массива; of — служебное слово (в переводе с английского «из»); integer — тип элементов массива.
Индексом могут быть не только натуральные числа: мы можем написать так: [0..10], [-29..45], [‘a’..’z’], [false..true] — то есть нам подходят любые символы и числа — главное соблюсти следующее условие: левая часть меньше правой. Для того чтобы определить, что меньше — восклицательный знак(‘!’) или точка(‘.’) используем таблицу ASCII и функции Ord() и Chr().
Как же производится ввод одномерного массива?
Для того чтобы ввести или вывести значения элементов такого массива, используем цикл с параметром(или с постусловием, или с предусловием — в общем, любой цикл. ).
for i := 1 to N do read(a[i]); //где a[i] -- элемент одномерного массива a с индексом (порядковым номером) i.
Как видите, ничего страшного в массивах нет. Массивы применяют в тех случаях, когда нельзя обойтись одной-двумя переменными (примеры таких задач мы рассматривали в решении задач из блока Series). В случаях, когда после ввода последовательности целиком пользователю необходимо обратиться к переменным в середине последовательности, в начале, поменять их значения местами, отсортировать.
Раз уж мы затронули тему задач из блока Series, давайте решим пару задачек оттуда с помощью массивов, а не тем увечным способом, которым нам приходилось пользоваться.
Одномерные массивы. Решение задач.
Series8. Дано целое число N и набор из N целых чисел. Вывести в том же порядке все четные числа из данного набора и количество K таких чисел.
Исходное решение: Series8.
Модифицированное решение:
var
a: array[1..1000] of integer; {мы не знаем заранее N, поэтому берем с запасом.}
k, N, i: integer;
begin
write('N = ');
readln(N);
write('Введите ', N, ' целых чисел: ');
for i := 1 to N do read(a[i]); {заполняем масссив}
{Начинаем выбирать чётные числа}
write('Чётные числа: ');
for i := 1 to N do
begin
if a[i] mod 2 = 0 then
begin
Inc(k);
write(a[i], ' ');
end;
end;
writeln();
writeln('Количество четных чисел - ', k);
end.
Series28. Дано целое число N и набор из N вещественных чисел: A1, A2, …, AN. Вывести следующие числа:
(A1)N, (A2)N−1, …, (AN−1)2, AN.
Исходное решение: Series28.
Более подробно про возведение числа в степень мы говорили в решении задачи for36.
Модифицированное решение:
var
a: array[1..1000] of integer;
N, i, j, n_pow: integer;
d, r: real;
begin
write('N = ');
readln(N);
write('Введите ', N, ' целых чисел: ');
for i := 1 to N do read(a[i]);
{Возводим элементы массива в степень}
for i := 1 to N do
begin
n_pow := N + 1 - i;
d := a[i];
if n_pow mod 2 <> 0 then r := d else r := 1; //в r будет записываться результат
while n_pow > 1 do
begin
n_pow := n_pow div 2;
d := d * d;
if n_pow mod 2 <> 0 then r := r * d;
end;
writeln(a[i], ' в степени ', N + 1 - i, ' равно ', r);
end;
end.
Ну и напоследок давайте разберём веселенькую задачу на длинную арифметику.
Задача. Найти факториал числа.
Мы уже решали эту задачу здесь(for19).
Научимся вычислять факториал натурального числа N. Факториал числа — это произведение чисел 1*2*3*…*(N-1 )*N (обозначается как N!). Сложность задачи в том, что уже 8!=40320, а 13!=6227020800. Типы данных Integer, Longlnt применимы весьма в ограниченном диапазоне натуральных чисел. Для представления факториала договоримся использовать массив. Пример:
| A[0] | A[1] | A[2] | A[3] | A[4] | A[5] | A[6] | A[7] | A[8] |
| 8 | 0 | 0 | 8 | 6 | 1 | 9 | 9 | 3 |
В массиве записано значение 11!=39916800. Каким образом? В А[0] фиксируется число занятых элементов массива, в А[1] — цифра единиц результата, в А[2] — цифра десятков результата, в А[3] — цифра сотен результата и т. д. Почему так, а не наоборот? Такая запись позволяет исключить сдвиг элементов массива при переносе значений в старший разряд. А сейчас наберите, как обычно, текст программы, выполните компиляцию и, выполните ее в пошаговом режиме, отслеживая изменение значений переменных при не очень большом значении N. Добейтесь полного понимания логики работы программы.
Для того чтобы выполнить программу в пошаговом режиме, нажмите «шаг без входа в подпрограмму» и перейдите в «локальные переменные».
const
MaxN = 300;
var
A: array [0..MaxN] of integer;
i, j, r, w, N: integer;
begin
Write('Введите число, факториал которого необходимо подсчитать: ');
Read(N);
A[0] := 1;
A[1] := 1;
j := 2; {Начальные присвоения, начинаем вычислять 2! }
while (j <= N) and (A[0] < MaxN) Do {Второе условие
позволяет избежать выхода из границ диапазона, если
количество цифр в факториале превзойдет 300.}
begin
r := 0;
i := 1;
{r - перенос из разряда в разряд при
выполнении умножения числа j на очередную цифру
A[i] предыдущего результата.}
while (i <= A[0]) or (r <> 0) Do
begin
{Пока не
«прошли» все цифры предыдущего результата или
есть перенос цифры в старший разряд}
w := A[i] * j + r;{Умножаем очередную цифру и
прибавляем цифру переноса из предыдущего
разряда}
A[i] := w mod 10; {Оставляем остаток от деления на 10}
r := w div 10;{Вычисляем значение переноса}
if A[A[0] + 1] <> 0 then Inc(A[0]);{Изменяем
количество элементов, если их количество увеличилось.}
Inc(i);
end;
Inc(j);
end;
write('Факториал: ');
for i := A[0] downto 1 Do Write(A[i]);{Вывод результата}
end.
Подведем итоги:
Одномерный массив — это конечное упорядоченное множество элементов. За первым элементом идет второй, за вторым — третий и т. д. Индекс может быть чем угодно — и целым числом, и символом. Но чаще мы всё-таки будем пользоваться следующим диапазоном: [1.. N].
На сегодня все! Если у вас еще остались вопросы о том, как работает программа выше, оставляйте их в комментариях. И очень скоро мы начнем решать задачи на массивы из задачника М. Э. Абрамяна.
Перейти к контенту
Вычислительная техника и дискретная математика
Найти произведение элементов одномерного массива, состоящего из n элементов. Элементы вводятся с клавиатуры.
Решение:
Program proisveden;
Var a: array[1..100] of integer;
i, n, p: integer;
Begin
Write (‘Сколько элементов? ’); Readln (n);
p:=1;
For i:=1 to n do
begin
write (‘введите число’); readln (a[i]);
p:=p*a[i];
end;
writeln(‘произведение элементов равно: ‘,p);
End.
Рейтинг
( Пока оценок нет )


