Такая задача часто встречается, если вы начали изучение программирования и уже дошли до работы с массивами.
Давайте разберемся с ней. Если вам необходимо найсти сумму или произведение элементов массива, или даже и то и другое, то нам понадобится для этого всего лишь один цикл.
Мы с напишем программу, которая выведет сам массив, сумму элементов массива, а также произведение элементов массива. Напишем ее на C++.
Прежде чем написать, давайте немного разберем сам алгоритм, обозначим шаги, которые необходимо будет сделать.
Первое — создадим сам массив, создадим начальную переменную для хранения суммы и начальную переменную для хранения произведения элементов массива.
Второе — с помощью цикла берем каждый элемент с первого до последнего. Элемент прибавляем его к переменной, котроая хранит сумму и записываем в переменную, которая хранит сумму (тавталогия?). Аналогичное проделываем и с переменной, которая хранит произведение.
Третье — выводим массив и выводим значения переменных, которые хранят сумму и произведение элементов массива.
Давайте теперь уже напишем программу, которая найдет сумму и произведение элементов массива на C++
#include
using namespace std;
int main()
{
/* Заполним массив значениями */
int n = 6;
int mass[n] = {5, 3, 2, 9, 3, 8};
/* Создадим переменные для хранения суммы и произведения */
int sumValue = 0; // Сумма
int proValue = 1; // Произведение (по умолчанию 1)
cout << endl << "Массив = ";
/* Проходим по всем элементам массива */
for (int i = 0; i < n; ++i) {
// Вынесем текущий элемент в переменную
int currentElementValue = mass[i];
// Сразу выведем его
cout << currentElementValue << " ";
// Пересчитываем сумму элементов массива с текущим значением
sumValue = sumValue + currentElementValue;
// Пересчитываем произведение элементов массива с текущим значением
// Если бы по умолчанию proValue был не 1, а 0, то так сделать нельзя было бы
// т.к. был бы всегда 0 при умножениях.
proValue = proValue * currentElementValue;
}
cout << endl << "Сумма элементов массива = " << sumValue;
cout << endl << "Произведение элементов массива = " << proValue;
return 0;
}
Компилируем и запускаем. Видим следующий вывод программы.
Проверяем на калькуляторе – все работает как нужно.
Данная тема основывается на теме: Массивы. Одномерные массивы. Инициализация массива
Содержание
- 1. Нахождение сумм и произведений элементов массива. Примеры
- 2. Нахождение максимального (минимального) элемента массива. Примеры
- 3. Сортировка массива методом вставки
- 4. Поиск элемента в массиве. Примеры
- Связанные темы
Поиск на других ресурсах:
1. Нахождение сумм и произведений элементов массива. Примеры
Пример 1. Задан массив A, содержащий 100 целых чисел. Найти сумму элементов этого массива. Фрагмент кода, решающего эту задачу
// сумма элементов массива A из 100 целых чисел int A[100]; int suma; // переменная, содержащая сумму int i; // дополнительная переменная // ввод массива A // ... // Вычисление суммы suma = 0; // обнулить сумму for (i=0; i<100; i++) suma += A[i];
Перебор всех элементов массива выполняется в цикле for.
Переменная sum сохраняет результирующее значение суммы элементов массива. Переменная i есть счетчиком, определяющим индекс элемента массива A[i].
Пример 2. Задан массив B, содержащий 20 вещественных чисел. Найти сумму элементов массива, которые лежат на парных позициях. Считать, что позиции 0, 2, 4 и т.д. есть парными.
// сумма элементов массива B // лежащих на парных позициях float B[20]; float sum; // переменная, содержащая сумму int i; // дополнительная переменная // ввод массива // ... // Вычисление суммы sum = 0; // обнулить сумму for (i=0; i<20; i++) if ((i%2)==0) sum += B[i];
В этом примере выражение
(i%2)==0
определяет парную позицию (парный индекс) массива B. Если нужно взять нечетные позиции, то нужно написать
(i%2)==1
Пример 3. Задан массив, который содержит 50 целых чисел. Найти сумму положительных элементов массива.
// сумма положительных элементов массива int A[50]; int sum; // переменная, содержащая сумму int i; // дополнительная переменная // ввод массива // ... // Вычисление суммы sum = 0; // обнулить сумму for (i=0; i<50; i++) if (A[i]>0) sum = sum + A[i];
Пример 4. Задан массив из 50 целых чисел. Найти произведение элементов массива, которые есть нечетными числами.
// произведение нечетных элементов массива int A[50]; int d; // переменная, содержащая произведение int i; // вспомогательная переменная // ввод массива // ... // Вычисление произведения d = 1; // начальная установка переменной d for (i=0; i<50; i++) if ((A[i]%2)==1) d = d * A[i];
Чтобы определить, есть ли элемент массива A[i] нечетным, нужно проверить условие
(A[i]%2)==1
Если условие выполняется, то элемент массива есть нечетное число.
⇑
2. Нахождение максимального (минимального) элемента массива. Примеры
Пример 1. Задан массив из 30 вещественных чисел. Найти элемент (индекс), имеющий максимальное значение в массиве.
// поиск позиции (индекса), содержащего максимальное значение float B[30]; float max; // переменная, содержащая максимум int index; // позиция элемента, содержащего максимальное значение int i; // дополнительная переменная // ввод массива // ... // поиск максимума // установить максимум как 1-й элемент массива index = 0; max = B[0]; for (i=1; i<30; i++) if (max<B[i]) { max = B[i]; // запомнить максимум index = i; // запомнить позицию максимального элемента }
В вышеприведенном примере переменная max содержит максимальное значение. Переменная index содержит позицию элемента, который имеет максимальное значение. В начале переменной max присваивается значение первого элемента массива. Затем, начиная со второго элемента, происходит прохождение всего массива в цикле for. Одновременно проверяется условие
if (max<B[i])
Если условие выполняется (найден другой максимум), тогда новое значение максимума фиксируется в переменных max и index.
Вышеприведенный пример находит только один максимум. Однако, в массивах может быть несколько максимальных значений. В этом случае для сохранения позиций (индексов) максимальных значений нужно использовать дополнительный массив как показано в следующем примере.
Пример 2. Задан массив содержащий 50 целых чисел. Найти позицию (позиции) элемента, который имеет минимальное значение. Если таких элементов несколько, сформировать дополнительный массив индексов.
// поиск позиций (индексов), содержащих минимальное значение int A[50]; int min; // переменная, содержащая минимальное значение int INDEXES[50]; // позиции элементов, содержащих минимальное значение int n; // число одинаковых минимальных значений int i; // дополнительная переменная // ввод массива // ... // 1. Поиск минимального значения // установить минимальное значение в первом элементе массива min = A[0]; for (i=1; i<50; i++) if (min>A[i]) min = A[i]; // запомнить минимальное значение // 2. Формирование массива n = 0; // обнулить счетчик в массиве INDEXES for (i=0; i<50; i++) if (min == A[i]) { n++; // увеличить число элементов в INDEXES INDEXES[n-1] = i; // запомнить позицию } listBox1->Items->Clear(); // 3. Вывод массива INDEXES в listBox1 for (i=0; i<n; i++) listBox1->Items->Add(INDEXES[i].ToString());
В вышеприведенном листинге сначала ищется минимальное значение min.
На втором шаге формируется массив INDEXES, в котором число элементов записывается в переменную n. Происходит поиск минимального значения в массиве A с одновременным формированием массива INDEXES.
На третьем шаге приведен пример, как вывести массив INDEXES в элементе управления listBox1(ListBox).
⇑
3. Сортировка массива методом вставки
Пример. Пусть дан массив A, содержащий 10 целых чисел. Отсортировать элементы массива в нисходящем порядке с помощью метода вставки.
// сортировка массива методом вставки int A[10]; int i, j; // дополнительные переменные - счетчики int t; // дополнительная переменная // ввод массива A // ... // сортировка for (i=0; i<9; i++) for (j=i; j>=0; j--) if (A[j]<A[j+1]) { // поменять местами A[j] и A[j+1] t = A[j]; A[j] = A[j+1]; A[j+1] = t; }
⇑
4. Поиск элемента в массиве. Примеры
Пример 1. Определить, находится ли число k в массиве M состоящем из 50 целых чисел.
// определение наличия заданного числа в массиве чисел int M[50]; int i; int k; // искомое значение bool f_is; // результат поиска, true - число k есть в массиве, иначе false // ввод массива M // ... // ввод числа k // ... // поиск числа в массиве f_is = false; for (i=0; i<50; i++) if (k==M[i]) { f_is = true; // число найдено break; // выход из цикла, дальнейший поиск не имеет смысла } // вывод результата if (f_is) label1->Text = "Число " + k.ToString() + " есть в массиве M."; else label1->Text = "Числа " + k.ToString() + " нет в массиве M.";
Пример 2. Найти все позиции вхождения числа k в массиве M состоящим из 50 целых чисел.
// определение всех позиций заданного числа в массиве чисел int M[50]; // массив чисел int i; // вспомогательная переменная int k; // искомое значение int INDEXES[50]; // искомый массив позиций вхождения числа k int n; // количество найденных позиций или количество элементов в массиве INDEXES // ввод массива M // ... // ввод числа k // ... // поиск числа k в массиве M и одновременное формирование массива INDEXES n = 0; for (i=0; i<50; i++) if (k==M[i]) { // число найдено n++; INDEXES[n-1] = i; } // вывод результата в listBox1 listBox1->Items->Clear(); for (i=0; i<n; i++) listBox1->Items->Add(INDEXES[i].ToString());
⇑
Связанные темы
- Массивы. Часть 1. Определение массива в C++. Одномерные массивы. Инициализация массива
- Массивы. Часть 2. Двумерные массивы. Массивы строк. Многомерные массивы
⇑
Ну какая же это константа? Вернее, константа – только в том смысле, что size
не будет изменяться, но во время компиляции эта константа неизвестна.
const int size = a;
Соответственно, это тоже неверно – в С++ размер массива должен быть известен во время компиляции:
int arr[size];
mul
надо инициализировать – вы начинаете множить мусор. Да и в int
результат вряд ли поместится без переполнения.
Так что…
int n;
cin >> n;
int * arr = new int[n];
for (int i = 0; i < n; i++)
cin >> arr[i];
double mul = 1;
for (int i = 0; i < n; i++)
mul *= arr[i];
cout << mul;
Только вот смотрите – можно два цикла объединить в один, так?
double mul = 1;
for (int i = 0; i < n; i++)
{
cin >> arr[i];
mul *= arr[i];
}
Но тогда встает вопрос – а зачем нам вообще массив? и мы получаем (еще и одну переменную экономим…)
int main()
{
int n;
cin >> n;
double mul = 1;
for (int i = n; i > 0; i--)
{
cin >> n;
mul *= n;
}
cout << mul;
}
Массив – это набор элементов, хранящихся в непрерывных ячейках памяти. Это наиболее часто используемая структура данных в программировании. Вы должны знать, как выполнять основные операции с массивом, такие как вставка, удаление, обход, нахождение суммы всех элементов, нахождение произведения всех элементов и т. Д.
В этой статье вы узнаете, как найти произведение всех элементов в массиве, используя итеративный и рекурсивный подходы.
Постановка задачи
Вам дан массив обр . Вам нужно найти произведение всех элементов массива, а затем распечатать конечный продукт. Вам необходимо реализовать это решение, используя циклы и рекурсию.
Пример 1. Пусть arr = [1, 2, 3, 4, 5, 6, 7, 8]
Произведение каждого элемента массива = 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 = 40320
Таким образом, на выходе получается 40320.
Пример 2. Пусть arr = [1, 1, 1, 1, 1, 1]
Произведение каждого элемента массива = 1 * 1 * 1 * 1 * 1 * 1 = 1
Таким образом, на выходе получается 1.
Итерационный подход к поиску произведения всех элементов массива
Вы можете найти продукт всех элементов массива с помощью итераций / циклов, следуя приведенному ниже подходу:
- Инициализируйте переменный результат (со значением 1), чтобы сохранить произведение всех элементов в массиве.
- Пройдитесь по массиву и умножьте каждый элемент массива на результат .
- Наконец, верните результат .
Программа на C ++ для поиска произведения элементов массива с помощью циклов
Ниже приведена программа на C ++ для поиска произведения элементов массива:
// C++ program to find the product of the array elements
#include <iostream>
using namespace std;
int findProduct(int arr[], int size)
{
int result = 1;
for(int i=0; i<size; i++)
{
result = result * arr[i];
}
return result;
} void printArrayElements(int arr[], int size)
{
for(int i=0; i<size; i++)
{
cout << arr[i] << " ";
}
cout << endl;
}
int main()
{
int arr1[] = {1, 2, 3, 4, 5, 6, 7, 8};
int size1 = sizeof(arr1)/sizeof(arr1[0]);
cout << "Array 1:" << endl;
printArrayElements(arr1, size1);
cout << "Product of the array elements: " << findProduct(arr1, size1) << endl;
int arr2[] = {1, 1, 1, 1, 1, 1};
int size2 = sizeof(arr2)/sizeof(arr2[0]);
cout << "Array 2:" << endl;
printArrayElements(arr2, size2);
cout << "Product of the array elements: " << findProduct(arr2, size2) << endl;
return 0;
}
Выход:
Array 1:
1 2 3 4 5 6 7 8
Product of the array elements: 40320
Array 2:
1 1 1 1 1 1
Product of the array elements: 1
Программа Python для поиска произведения элементов массива с помощью циклов
Ниже приведена программа Python для поиска произведения элементов массива:
# Python program to find product of the list elements
def findProduct(arr, size):
result = 1
for i in range(size):
result = result * arr[i]
return result
def printListElements(arr, size):
for i in range(size):
print(arr[i], end=" ")
print()
arr1 = [1, 2, 3, 4, 5, 6, 7, 8]
size1 = len(arr1)
print("Array 1:")
printListElements(arr1, size1)
print("Product of the array elements:", findProduct(arr1, size1))
arr2 = [1, 1, 1, 1, 1, 1]
size2 = len(arr2)
print("Array 2:")
printListElements(arr2, size2)
print("Product of the array elements:", findProduct(arr2, size2))
Выход:
Array 1:
1 2 3 4 5 6 7 8
Product of the array elements: 40320
Array 2:
1 1 1 1 1 1
Product of the array elements: 1
Программа на JavaScript для поиска произведения элементов массива с помощью циклов
Ниже приведена программа на JavaScript для поиска произведения элементов массива:
// JavaScript program to find the product of the array elements
function findProduct(arr, size) {
let result = 1;
for(let i=0; i<size; i++) {
result = result * arr[i];
}
return result;
}
function printArrayElements(arr, size) {
for(let i=0; i<size; i++) {
document.write(arr[i] + " ");
}
document.write("<br>");
} var arr1 = [1, 2, 3, 4, 5, 6, 7, 8];
var size1 = arr1.length;
document.write("Array 1:" + "<br>");
printArrayElements(arr1, size1);
document.write("Product of the array elements: " + findProduct(arr1, size1) + "<br>");
var arr2 = [1, 1, 1, 1, 1, 1];
var size2 = arr2.length;
document.write("Array 2:" + "<br>");
printArrayElements(arr2, size2);
document.write("Product of the array elements: " + findProduct(arr2, size2) + "<br>");
Выход:
Array 1:
1 2 3 4 5 6 7 8
Product of the array elements: 40320
Array 2:
1 1 1 1 1 1
Product of the array elements: 1
Программа на C для поиска произведения элементов массива с помощью циклов
Ниже приведена программа на языке C для поиска произведения элементов массива:
// C program to find the product of the array elements
#include <stdio.h>
int findProduct(int arr[], int size)
{
int result = 1;
for(int i=0; i<size; i++)
{
result = result * arr[i];
}
return result;
} void printArrayElements(int arr[], int size)
{
for(int i=0; i<size; i++)
{
printf("%d ", arr[i]);
}
printf("n");
}
int main()
{
int arr1[] = {1, 2, 3, 4, 5, 6, 7, 8};
int size1 = sizeof(arr1)/sizeof(arr1[0]);
printf("Array 1: n");
printArrayElements(arr1, size1);
printf("Product of the array elements: %d n", findProduct(arr1, size1));
int arr2[] = {1, 1, 1, 1, 1, 1};
int size2 = sizeof(arr2)/sizeof(arr2[0]);
printf("Array 2: n");
printArrayElements(arr2, size2);
printf("Product of the array elements: %d n", findProduct(arr2, size2));
return 0;
}
Выход:
Array 1:
1 2 3 4 5 6 7 8
Product of the array elements: 40320
Array 2:
1 1 1 1 1 1
Product of the array elements: 1
Рекурсивный подход к поиску произведения всех элементов в массиве
Вы можете найти произведение всех элементов массива с помощью рекурсии, следуя псевдокоду ниже:
function findProduct(arr,n):
if n == 0:
return(arr[n])
else:
return (arr[n] * findProduct(arr, n - 1))
Программа на C ++ для поиска произведения элементов массива с помощью рекурсии
Ниже приведена программа на C ++ для поиска произведения элементов массива:
// C++ program to find the product of the array elements using recursion
#include <iostream>
using namespace std;
int findProduct(int arr[], int n)
{
if (n == 0)
{
return(arr[n]);
}
else
{
return (arr[n] * findProduct(arr, n - 1));
}
} void printArrayElements(int arr[], int size)
{
for(int i=0; i<size; i++)
{
cout << arr[i] << " ";
}
cout << endl;
}
int main()
{
int arr1[] = {1, 2, 3, 4, 5, 6, 7, 8};
int size1 = sizeof(arr1)/sizeof(arr1[0]);
cout << "Array 1:" << endl;
printArrayElements(arr1, size1);
cout << "Product of the array elements: " << findProduct(arr1, size1-1) << endl;
int arr2[] = {1, 1, 1, 1, 1, 1};
int size2 = sizeof(arr2)/sizeof(arr2[0]);
cout << "Array 2:" << endl;
printArrayElements(arr2, size2);
cout << "Product of the array elements: " << findProduct(arr2, size2-1) << endl;
return 0;
}
Выход:
Array 1:
1 2 3 4 5 6 7 8
Product of the array elements: 40320
Array 2:
1 1 1 1 1 1
Product of the array elements: 1
Программа Python для поиска произведения элементов массива с помощью рекурсии
Ниже приведена программа Python для поиска произведения элементов массива:
# Python program to find th eproduct of the list elements using recursion
def findProduct(arr, n):
if n == 0:
return(arr[n])
else:
return (arr[n] * findProduct(arr, n - 1))
def printListElements(arr, size):
for i in range(size):
print(arr[i], end=" ")
print()
arr1 = [1, 2, 3, 4, 5, 6, 7, 8]
size1 = len(arr1)
print("Array 1:")
printListElements(arr1, size1)
print("Product of the array elements:", findProduct(arr1, size1-1))
arr2 = [1, 1, 1, 1, 1, 1]
size2 = len(arr2)
print("Array 2:")
printListElements(arr2, size2)
print("Product of the array elements:", findProduct(arr2, size2-1))
Выход:
Array 1:
1 2 3 4 5 6 7 8
Product of the array elements: 40320
Array 2:
1 1 1 1 1 1
Product of the array elements: 1
Программа JavaScript для поиска произведения элементов массива с помощью рекурсии
Ниже приведена программа на JavaScript для поиска произведения элементов массива:
// JavaScript program to find the product of the array elements using recursion
function findProduct(arr, n) {
if (n == 0) {
return(arr[n]);
} else {
return (arr[n] * findProduct(arr, n - 1));
}
}
function printArrayElements(arr, size) {
for(let i=0; i<size; i++) {
document.write(arr[i] + " ");
}
document.write("<br>");
} var arr1 = [1, 2, 3, 4, 5, 6, 7, 8];
var size1 = arr1.length;
document.write("Array 1:" + "<br>");
printArrayElements(arr1, size1);
document.write("Product of the array elements: " + findProduct(arr1, size1) + "<br>");
var arr2 = [1, 1, 1, 1, 1, 1];
var size2 = arr2.length;
document.write("Array 2:" + "<br>");
printArrayElements(arr2, size2);
document.write("Product of the array elements: " + findProduct(arr2, size2) + "<br>");
Выход:
Array 1:
1 2 3 4 5 6 7 8
Product of the array elements: 40320
Array 2:
1 1 1 1 1 1
Product of the array elements: 1
Программа на C для поиска произведения элементов массива с помощью рекурсии
Ниже приведена программа на языке C для поиска произведения элементов массива:
// C program to find the product of the array elements using recursion
#include <stdio.h>
int findProduct(int arr[], int n)
{
if (n == 0)
{
return(arr[n]);
}
else
{
return (arr[n] * findProduct(arr, n - 1));
}
} void printArrayElements(int arr[], int size)
{
for(int i=0; i<size; i++)
{
printf("%d ", arr[i]);
}
printf("n");
}
int main()
{
int arr1[] = {1, 2, 3, 4, 5, 6, 7, 8};
int size1 = sizeof(arr1)/sizeof(arr1[0]);
printf("Array 1: n");
printArrayElements(arr1, size1);
printf("Product of the array elements: %d n", findProduct(arr1, size1-1));
int arr2[] = {1, 1, 1, 1, 1, 1};
int size2 = sizeof(arr2)/sizeof(arr2[0]);
printf("Array 2: n");
printArrayElements(arr2, size2);
printf("Product of the array elements: %d n", findProduct(arr2, size2-1));
return 0;
}
Выход:
Array 1:
1 2 3 4 5 6 7 8
Product of the array elements: 40320
Array 2:
1 1 1 1 1 1
Product of the array elements: 1
Укрепите свои концепции массива
Массивы – неотъемлемая часть программирования. Это одна из самых важных тем для технических собеседований.
Если программы, основанные на массивах, все еще пугают вас, попробуйте решить некоторые основные проблемы с массивами, например, как найти сумму всех элементов в массиве, как найти максимальный и минимальный элемент в массиве, как перевернуть массив и т. Д. поможет вам укрепить ваши концепции массивов.
Сумма и произведение элементов массива
Просмотров 10.6к. Обновлено 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