
- •1. Краткие теоретические сведения
- •1.1. Переменные с индексами и массивы
- •1.2. Описание массивов в программах
- •1.3. Динамические массивы
- •1.4. Программирование вычислительных процессов, содержащих одномерные массивы (Алгоритмы обработки одномерных массивов)
- •1.4.1. Инициализация массива
- •1.4.2. Формирование и вывод массива
- •1.4.3. Ввод – вывод статического одномерного массива
- •1.4.4. Ввод – вывод динамического одномерного массива
- •1.4.5. Суммирование элементов одномерного массива
- •1.4.6. Табуляция значений функции, аргумент которой – одномерный массив
- •1.4.7. Поиск минимального и максимального значений одномерного массива
- •1.4.8. Сортировка значений одномерного массива по возрастанию (убыванию) методом попарного сравнения
- •1.4.9. Сортировка значений одномерного массива по возрастанию (убыванию) методом нахождения минимума (максимума)
- •Нахождения минимума для примера 10.8
- •1.4.10. Перестановка двух элементов массива
- •1.4.11. Вычисление суммы элементов массива
- •1.4.12. Подсчет количества элементов массива, удовлетворяющих заданному условию
- •1.4.13. Вычисление произведения элементов массива
- •1.4.14. Поиск элементов, обладающих заданным свойством
- •1.4.15. Поиск в упорядоченном массиве
- •1.4.16. Поиск минимального и максимального элемента массива и его порядкового номера (индекса)
- •1.4.17. Копирование массивов
- •1.4.18. Формирование нового массива
- •1.4.19. Примеры решения задач по обработке одномерных массивов
- •2. Задание
- •2.4. Задания для выполнения на занятиях
- •2.4.1. Задание 1. Вычисление сумм, количеств и произведений элементов массива
- •2.4.1.1. Условие задания
- •2.4.1.2. Пример для варианта 30
- •2.4.1.3. Программа
- •2.4.1.4. Тестирование
- •2.4.2. Задание 2. Поиск минимального и максимального элементов массива
- •2.4.2.1. Условие задания
- •2.4.2.2. Пример для варианта 30
- •2.4.2.3. Программа
- •2.4.2.4. Тестирование
- •2.4.3. Задание 3. Формирование новых массивов
- •2.4.3.1. Условие задания
- •2.4.3.2. Пример для варианта 30
- •2.4.3.3. Программа
- •2.4.3.4. Тестирование
- •2.4.4. Задание 4. Обработка упорядоченных массивов
- •2.4.4.1. Условие задания
- •2.4.4.2. Пример для варианта 30
- •2.4.4.3. Программа
- •2.4.4.4. Тестирование
- •2.4.5. Задание 5. Задачи, сводящиеся к обработке одномерных массивов
- •2.4.5.1. Условие задания
- •2.4.5.2. Пример для варианта 30
- •2.4.5.3. Программа
- •2.4.5.4. Тестирование
- •2.4.6. Задание 6. Комбинированные задачи
- •2.4.6.1. Условие задания
- •2.4.6.2. Пример для варианта 30
- •2.4.6.3. Программа
- •2.5.1.2. Пример для варианта 30
- •2.5.1.3. Программа
- •2.5.1.4. Тестирование
- •2.5.2. Задание 8. Комбинированные задания
- •2.5.2.1. Условие задания
- •Варианты заданий
- •5. Пример решения задачи (вариант 30)
- •2.5.2.2. Разработка алгоритма.
- •2.5.2.3. Определение переменных программы
- •2.5.2.4. Разработка текста программы
- •2.5.2.5. Программа
- •2.5.2.6. Отладка программы
- •2.5.2.7. Результаты работы программы
- •2.5.3. Задание 9. Комбинированные задания
- •2.5.3.1. Варианты заданий
- •2.5.3.2. Пример программы обработки динамических массивов
- •2.5.3.3. Программа
- •2.5.3.4. Тестирование
- •2.5.4. Задание 10. Вычисления элементов вектора по формуле
- •2.5.4.2. Пример для варианта 30
- •2.5.4.3. Программа
- •2.5.5.4. Тестирование
- •2.5.5. Задание 11. Вычисления сумм и произведений векторов
- •2.5.5.2. Пример для варианта 30
- •2.4.11.3. Программа
- •2.5.5.4. Тестирование
- •2.5.6. Задание 12. Произвольные задачи
- •2.5.6.2. Пример для варианта 30
- •2.5.6.3. Программа
- •2.5.6.4. Тестирование
- •3. Выводы
- •4. Требование к отчету
- •4. Краткие теоретические сведения.
- •5. Вопросы для самоконтроля
- •Литература
- •1. Краткие теоретические сведения 2
- •1.1. Переменные с индексами и массивы 2
1.4.2. Формирование и вывод массива
Следующий фрагмент программы демонстрирует запись в массив значений линейной функции f (x) = k*x + b (для х меняющегося в интервале от щ до 100 с шагом 1) и вывода значений массива на экран.
Пример 10.2
double k=0.5, b = 10.0;
double f[100];
for(int i =0; i < 100; i++)
{
f[i] = k*i+b;
cout << "i = " << i << " f[i] = " << f[i];
}
1.4.3. Ввод – вывод статического одномерного массива
Для ввода n элементов одномерного массива, назовем его a, требуется организовать цикл, для ввода каждого i – го элемента, где i=0,1,2, …, n–1. Аналогичный цикл требуется организовать и для вывода элементов массива. На рисунке 10.2 изображена графическая схема ввода и вывода элементов массива.
|
|
Пример 10.3 /* Ввод – вывод статического массива*/ #include <stdio.h> #include <conio.h> #include <iostream.h> #define n 10 int main() { int i; float a[n];
// Ввод массива a for (i=0; i<n; i++) { cout <<"Введите " << i << "-ый элемент массива a: "; cin >> a[i]; } // Вывод массива a cout <<"Массив a: " << endl; for (i=0; i<n; i++) { cout <<"i = " << i << " a[i] = " << a[i] <<endl; } cout << "Нажмите любую клавишу..." ; getch(); return 0; } |
|
|
|
Рис. 10.2. Алгоритм и программа ввода – вывода статического массива |
|
|
1.4.4. Ввод – вывод динамического одномерного массива
Ввод–вывод динамического массива осуществляется по тому же алгоритму. Из приведенного ниже примера программы ввода и вывода динамического массива видно, что отличие заключается лишь в описании массива.
Пример 10.4
/* Ввод – вывод динамического массива*/
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
int main()
{
int i,n;
cout << "Введите число элементов массива a: n = ";
cin >> n;
float *a=new float[n]; // Описание динамического массива
// Ввод массива a
for (i=0; i<n; i++)
{
cout <<"Введите " << i << "-ый элемент массива a: ";
cin >> a[i];
}
// Вывод массива a
cout <<"Массива a: " << endl;
for (i=0; i<n; i++)
{
cout <<"i = " << i << " a[i] = " << a[i] <<endl;
}
delete[] a; // Освобождение памяти выделенной под массив
cout << "Нажмите любую клавишу..." ;
getch();
return 0;
}
1.4.5. Суммирование элементов одномерного массива
Пример 10.5
Составить блок-схему алгоритма и программу для суммирования компонент вектора х, т.е. вычислить:
Блок-схема алгоритма, реализующего указанные вычисления, приведена на рис. 10.3.
Для рассматриваемого примера таблица идентификаторов может иметь вид:
Таблица 10.1
Таблица идентификаторов примера 8.1
В исходном выражении |
у |
x |
i |
В программе на С++ |
у |
x |
i |
Программа на С++ может иметь вид:
/* Суммирование элементов массива*/
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#define n 20
int main()
{
int i;
float x[n],y;
// Ввод массива x
for (i=0; i<n; i++)
{
cout <<"Введите " << i << "-ый элемент массива x: ";
cin >> x[i];
}
// Вывод массива x
cout <<"Массива x: " << endl;
for (i=0; i<n; i++)
{
cout <<"i = " << i << " x[i] = " << x[i] <<endl;
}
y=0;
for (i=0; i<n; i++) y = y + pow(x[i],i);
cout <<"Сумма элементов массива х = " << y << endl;
cout << "Нажмите любую клавишу..." ;
getch();
return 0;
}
Рис. 10.2. Блок-схема алгоритма примера 10.3