Решение задач на операторы цикла для обработки одномерных массивов. Циклы for, while, do…while
Содержание
- Решения задач
- 1. Нахождение суммы элементов массива из n вещественных чисел
- 2. Нахождение среднего арифметического элементов массива из n вещественных чисел
- 3. Поэлементное копирование массивов
- 4. Обращение массива (получить результирующий массив, обратный к исходному)
- 5. Обращение массива без использования дополнительного массива
- Связанные темы
Поиск на других ресурсах:
1. Нахождение суммы элементов массива из n вещественных чисел
1.1. Решение с использованием цикла for
// сумма элементов массива вещественных чисел const int MaxN = 100; int n; float A[MaxN]; float sum; // результат - сумма элементов массива // задать значение n n = 10; // заполнение массива A произвольными значениями for (int i=0; i<n; i++) A[i] = 0.1f * i; // сначала обнулить значение sum sum = 0; // цикл вычисления суммы for (int i=0; i<n; i++) sum = sum + A[i];
1.2. Решение с использованием цикла while
Решение задачи с использованием цикла while
// сумма элементов массива вещественных чисел - цикл while const int Max = 100; // максимально-допустимое количество элементов массива int n; // n = 1..Max - заданное количество элементов массива float A[Max]; // массив float sum; // результат - сумма элементов массива int i; // дополнительная переменная // задать значение n n = 10; // заполнение массива A произвольными значениями через цикл while i=0; while (i<n) { A[i] = 0.1f*i; i++; } // сначала обнулить значение sum и i sum = 0; i = 0; // цикл while для вычисления суммы while (i<n) { sum += A[i]; i++; }
1.3. Решение задачи. Цикл do…while
// сумма элементов массива вещественных чисел - цикл do..while const int Max = 100; // максимально-допустимое количество элементов массива int n; // n = 1..Max - заданное количество элементов массива float A[Max]; // массив float sum; // результат - сумма элементов массива int i; // дополнительная переменная // задать значение n n = 10; // заполнение массива A произвольными значениями через цикл do..while i=0; do { A[i] = 0.1f*i; i++; } while (i<n); // сначала обнулить значение sum и i sum = 0; i = 0; // цикл do..while для вычисления суммы do { sum += A[i]; i++; } while (i<n);
2. Нахождение среднего арифметического элементов массива из n вещественных чисел
Чтобы найти среднее арифметическое элементов массива, сначала нужно найти сумму элементов массива, а потом эту сумму поделить на число элементов массива.
2.1. Решение. Цикл for
В примере пропущен ввод массива и количества элементов массива n.
// среднее арифметическое элементов массива вещественных чисел - цикл for const int Max = 100; // максимально-допустимое количество элементов массива int n; // n = 1..Max - заданное количество элементов массива float A[Max]; // массив float avg; // результат - среднее арифметическое int i; // дополнительная переменная // ввод массива A и количества элементов массива n // ... // сумма вычисляется в переменной avg avg = 0; // цикл for для вычисления суммы for (i=0; i<n; i++) { avg += A[i]; } // вычисление среднего арифметического avg = avg / n;
2.2. Решение. Цикл while
В примере пропущен ввод массива и количества элементов массива n.
// среднее арифметическое элементов массива вещественных чисел - цикл while const int Max = 100; // максимально-допустимое количество элементов массива int n; // n = 1..Max - заданное количество элементов массива float A[Max]; // массив float avg; // результат - среднее арифметическое int i; // дополнительная переменная // ввод массива A и количества элементов массива n // ... // заполнение массива A произвольными значениями через цикл do..while i=0; do { A[i] = 0.1f*i; i++; } while (i<n); // сумма вычисляется в переменной avg avg = 0; i = 0; // цикл while для вычисления суммы while (i<n) { avg += A[i]; i++; } // вычисление среднего арифметического avg = avg / n;
2.3. Решение. Цикл do…while
В примере пропущен ввод массива и количества элементов массива n.
// среднее арифметическое элементов массива вещественных чисел - цикл do..while const int Max = 100; // максимально-допустимое количество элементов массива int n; // n = 1..Max - заданное количество элементов массива float A[Max]; // массив float avg; // результат - среднее арифметическое int i; // дополнительная переменная // ввод массива A и количества элементов массива n // ... // сумма вычисляется в переменной avg avg = 0; i = 0; // цикл do..while для вычисления суммы do { avg += A[i]; i++; } while (i<n); // вычисление среднего арифметического avg = avg / n;
3. Поэлементное копирование массивов
3.1. Цикл for
В данном примере приводится фрагмент кода, копирующий массив A из 10 вещественных чисел (float) в массив B.
// поэлементное копирование массивов - цикл for const int Max = 100; // максимально-допустимое количество элементов массива int n; // n = 1..Max - заданное количество элементов массива float A[Max]; // массив-источник float B[Max]; // массив-назначение int i; // дополнительная переменная // ввод массива A и количества элементов массива n // ... // цикл копирования A => B for (i=0; i<n; i++) { B[i] = A[i]; }
3.2. Цикл while
Фрагмент копирования массива A в массив B с использованием цикла while
// поэлементное копирование массивов - цикл while const int Max = 100; // максимально-допустимое количество элементов массива int n; // n = 1..Max - заданное количество элементов массива float A[Max]; // массив-источник float B[Max]; // массив-назначение int i; // дополнительная переменная // ввод массива A и количества элементов массива n // ... // цикл копирования A => B i=0; while (i<n) { B[i] = A[i]; i++; }
3.3. Цикл do…while
Реализация копирования массивов с использованием цикла do…while
// поэлементное копирование массивов - цикл do...while const int Max = 100; // максимально-допустимое количество элементов массива int n; // n = 1..Max - заданное количество элементов массива double A[Max]; // массив-источник double B[Max]; // массив-назначение int i; // дополнительная переменная // ввод массива A и количества элементов массива n // ... // цикл копирования A => B i=0; do { B[i] = A[i]; i++; } while (i<n);
4. Обращение массива (получить результирующий массив, обратный к исходному)
Пусть имеются два массива с именами A и B. Массив A задается. Получить результирующий массив B, обратный к исходному массиву A (элементы массива B идут в обратном порядке по отношению к массиву A).
В данном примере приводится реализация обращения массива с помощью трех известных операторов цикла.
// Получение обратного массива const int Max = 100; // максимально-допустимое количество элементов массива int n; // n = 1..Max - заданное количество элементов массива double A[Max]; // массив-источник double B[Max]; // массив-назначение int i; // дополнительная переменная // ввод массива A и количества элементов массива n // ... // решение задачи с помощью цикла do...while обратного копирования A => B i=0; do { B[i] = A[n-i-1]; i++; } while (i<n); // решение с помощью цикла for for (i=0; i<n; i++) B[i] = A[n-i-1]; // решение с помощью цикла while i=0; while (i<n) { B[i] = A[n-i-1]; ++i; }
5. Обращение массива без использования дополнительного массива
Задан массив A с n вещественных чисел. Реализовать операцию обращения массива без использования дополнительного массива.
В приведенном ниже коде реализовано обращение массива с использованием операторов циклов for, while, do…while.
Пусть задано следующее описание типов данных
// Обращение массива A const int Max = 100; // максимально-допустимое количество элементов массива int n; // n = 1..Max - заданное количество элементов массива double A[Max]; // массив-источник int i; // дополнительная переменная double t; // дополнительная переменная // ввод массива A и количества элементов массива n // ...
Тогда решение задачи с использованием цикла do…while
// решение задачи с помощью цикла do...while обратного копирования A => B i=0; do { t = A[i]; A[i] = A[n-i-1]; A[n-i-1] = t; i++; } while (i < (n/2));
Решение задачи с использованием цикла for
// решение с помощью цикла for for (i=0; i<n/2; i++) { t = A[i]; // использование дополнительной переменной t A[i] = A[n-i-1]; A[n-i-1] = t; }
Решение задачи с использованием цикла while.
// решение с помощью цикла while i=0; while (i<n/2) { t = A[i]; A[i] = A[n-i-1]; A[n-i-1] = t; i++; }