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.
Рейтинг
( Пока оценок нет )