C++. Решение задач на одномерные массивы. Совмещение оператора цикла с оператором условия
Содержание
- 1. Нахождение суммы положительных элементов массива из n целых чисел
- 2. Найти сумму элементов массива, которые размещаются на парных индексах
- 3. Найти произведение элементов массива, которые больше заданного числа
- 4. Определение наличия (отсутствия) заданного символа в массиве символов (тип char)
- 5. Определение наличия (отсутствия) заданного числа в массиве чисел. Массив имеет n целых чисел
- 6. Поиск позиции последнего вхождения элемента k в массиве из n целых чисел
- 7. Поиск позиции первого вхождения элемента k в массиве из n целых чисел
- 8. Подсчет количества элементов k в массиве из n целых чисел
- 9. Подсчет количества элементов в массиве из n вещественных чисел, которые меньше заданного значения k
- 10. Подсчет количества элементов в массиве из n вещественных чисел, значение которых находится в пределах диапазона [a .. b].
- 11. Подсчет количества парных элементов в массиве из n целых чисел
- Связанные темы
Поиск на других ресурсах:
1. Нахождение суммы положительных элементов массива из n целых чисел
Задан массив A из 10 целых чисел. Найти сумму положительных элементов массива
1.1. Реализация с помощью цикла for
В данном примере пропущен ввод массива A
// Нахождение суммы положительных элементов массива const int Max = 10; int A[Max]; // заданный массив int i; // ввод массива A // ... // вычисление суммы int sum = 0; for (i=0; i<MaxN; i++) if (A[i]>0) sum = sum + A[i];
1.2. Реализация с помощью цикла while
// Нахождение суммы положительных элементов массива const int Max = 10; int A[Max]; // заданный массив int i; // дополнительная переменная int sum = 0; // результат // ввод массива A // ... // вычисление суммы i=0; while (i<MaxN) { if (A[i]>0) sum+=A[i]; i++; }
1.3. Реализация с помощью цикла do…while
// Нахождение суммы положительных элементов массива const int Max = 10; int A[Max]; // заданный массив int i; // дополнительная переменная int sum = 0; // результат // ввод массива A // ... // вычисление суммы i=0; do { if (A[i]>0) sum+=A[i]; i++; } while (i<MaxN);
⇑
2. Найти сумму элементов массива, которые размещаются на парных индексах
В данном примере вычисляются суммы элементов массива A, индексы которых есть парными: 0, 2, 4, … Чтобы определить есть ли число (индекс массива) парным, нужно выполнить проверку
if ((i%2)==0) { // действия, если число парное // ... }
Реализация решения данной задачи тремя видами цикла (ввод массива A пропущен).
// Нахождение суммы элементов массива, имеющих парные индексы (0, 2, 4,...) const int Max = 10; int A[Max]; // заданный массив int i; // дополнительная переменная int sum1, sum2, sum3; // результаты вычислений разными видами циклов // ввод массива A // ... // вычисление суммы, цикл for sum1 = 0; for (i=0; i<Max; i++) if ((i%2)==0) // определение парности числа sum1+=A[i]; // вычисление суммы, цикл while sum2 = 0; i=0; while (i<MaxN) { if ((i%2)==0) sum2+=A[i]; i++; } // вычисление суммы, цикл do...while sum3 = 0; i=0; do { if ((i%2)==0) sum3+=A[i]; i++; } while (i<MaxN);
⇑
3. Найти произведение элементов массива, которые больше заданного числа
В примере находится произведение элементов массива A, которые больше числа, которое размещается в переменной number.
Реализация задачи с использованием цикла for:
// произведение элементов массива, которые больше заданного числа const int Max = 10; int A[Max]; // заданный массив int number; // заданное число int i; // дополнительная переменная int res; // результат - произведение // ввод массива A for (i=0; i<MaxN; i++) { A[i] = i; } // задание числа number number = 5; // поиск произведения - цикл for res = 1; for (i=0; i<MaxN; i++) if (A[i]>number) res = res * A[i]; // res = 3024
Если размерность массива большая, то результат произведения целесообразно держать в переменной типа double (float). Это связано с тем, что результатом произведения могут быть очень большие или очень маленькие числа. При использовании целых типов может возникнуть переполнение.
Фрагмент реализации данной задачи с использованием цикла while
... // поиск произведения - цикл while res = 1; i=0; while (i<MaxN) { if (A[i]>number) res = res * A[i]; i++; } // res = 3024
Реализация с помощью цикла do…while
// поиск произведения - цикл do...while res = 1; i=0; do { if (A[i]>number) res = res * A[i]; i++; } while (i<MaxN); // res = 3024
⇑
4. Определение наличия (отсутствия) заданного символа в массиве символов (тип char)
Пусть задан массив символов M. Определить, есть ли заданный символ sym в массиве M. В данном примере пропущен этап ввода массива M и символа sym. Реализация алгоритма с использованием цикла for.
// определение наличия (отсутствия) символа в массиве M char M[10]; // заданный массив char sym; // заданный символ int i; bool f; // результат: true - символ sym есть в массиве M // ввод массива M // ... // вычисление f = false; for (i=0; i<10; i++) if (M[i]==sym) f = true;
⇑
5. Определение наличия (отсутствия) заданного числа в массиве чисел. Массив имеет n целых чисел
Задан массив A целых чисел. Определить, есть ли заданное число num в массиве A.
Реализация с использованием цикла while (ввод массива A и переменных n, num пропущен).
// определение наличия (отсутствия) заданного числа в массиве чисел int A[50]; // заданный массив A int n; // текущая размерность массива n = 1..50 int num; // искомое число int i; // дополнительная переменная bool f; // результат: f=true - число есть в массиве, иначе f=false // ввод A, n, num // ... // вычисление f = false; i=0; while (i<n) { if (A[i] == num) f = true; i++; }
⇑
6. Поиск позиции последнего вхождения элемента k в массиве из n целых чисел
Способ 1 (медленный).
В данном алгоритме результирующая переменная pos определяет позицию последнего вхождения элемента k в массиве из n целых чисел. Если такого символа нет в массиве, то pos = -1. Реализация с помощью цикла do…while
// поиск позиции последнего вхождения элемента k в массиве из n целых чисел int A[50]; // заданный массив A int n; // текущая размерность массива n = 1..50 int k; // искомое число int i; // дополнительная переменная int pos; // результат - номер позиции, если pos=-1, то числа k не найдено в массиве A // ввод A, n, k // ... // вычисление, реализация с помощью цикла do...while pos = -1; i=0; do { if (A[i] == k) pos = i; i++; } while (i<n);
Способ 2 (быстрый).
Если перебирать (пересматривать) индексы массива от конца к началу, то первый элемент равен k будет позицией последнего вхождения. В этом случае реализация алгоритма (цикл do…while) будет следующей
// поиск позиции последнего вхождения элемента k в массиве из n целых чисел int A[50]; // заданный массив A int n; // текущая размерность массива n = 1..50 int k; // искомое число int i; // дополнительная переменная int pos; // результат - номер позиции, если pos=-1, то число k не найдено в массиве A // ввод A, n, k // ... // вычисление, реализация с помощью цикла do..while pos = -1; i=n-1; do { if (A[i] == k) { pos = i; i=-1; // выход из цикла } else i--; } while (i>=0);
⇑
7. Поиск позиции первого вхождения элемента k в массиве из n целых чисел
Как было показано в предыдущем пункте, эту задачу можно решать разными способами. В нижеследующем коде массив пересматривается от начала к концу. Как только встречается элемент k, происходит запоминание позиции элемента k и выход из цикла.
Реализация задачи с использованием цикла for.
// поиск позиции первого вхождения элемента k в массиве из n целых чисел int A[50]; // заданный массив A int n; // текущая размерность массива n = 1..50 int k; // искомое число int i; // дополнительная переменная int pos; // результат - номер позиции, если pos=-1, то число k не найдено в массиве A // ввод A, n, k // ... // вычисление, реализация с помощью цикла for pos = -1; for (i=0; i<n; i++) if (A[i]==k) { pos = i; break; // выход из цикла }
⇑
8. Подсчет количества элементов k в массиве из n целых чисел
В нижеследующем коде пропущен ввод массива A и значений n, k.
// подсчет количества элементов k в массиве A int A[50]; // заданный массив A int n; // текущая размерность массива n = 1..50 int k; // искомое число int i; // дополнительная переменная int count; // результат - количество найденных элементов // ввод A, n, k // ... // вычисление, реализация с помощью цикла while count=0; i=0; while (i<n) if (A[i++]==k) count++;
⇑
9. Подсчет количества элементов в массиве из n вещественных чисел, которые меньше заданного значения k
Реализация с помощью цикла do…while
// подсчет количества элементов, которые меньше заданного k int A[50]; // заданный массив A int n; // текущая размерность массива n = 1..50 int k; // сравниваемое значение int i; // дополнительная переменная int count; // результат // ввод A, n, k // ... // вычисление, реализация с помощью цикла while count=0; i=0; do { if (A[i]<k) count++; i++; } while (i<n);
⇑
10. Подсчет количества элементов в массиве из n вещественных чисел, значение которых находится в пределах диапазона [a .. b].
// подсчет количества элементов, которые лежат в заданном диапазоне double M[50]; // заданный массив M int n; // текущая размерность массива n = 1..50 double a, b; // сравниваемые значения int i; // дополнительная переменная int count; // результат // ввод A, n, a, b // ... // вычисление, реализация с помощью цикла for count=0; for (i=0; i<n; i++) if ((M[i]>=a)&&(M[i]<=b)) count++;
⇑
11. Подсчет количества парных элементов в массиве из n целых чисел
// подсчет количества парных элементов в массиве целых чисел int A[10]; // заданный массив A int n; // текущая размерность массива n = 1..10 int i; // дополнительная переменная int count; // результат - количество парных элементов // ввод A, n // ... // вычисление, реализация с помощью цикла for count=0; for (i=0; i<n; i++) if ((A[i]%2)==0) count++;
⇑
Связанные темы
- Одномерные массивы. Циклы for, while, do…while
- Массивы. Примеры решения распостраненных задач с одномерными массивами
⇑