- •4. 1. Базовые средства языка
- •Алфавит языка
- •4.1.5. Типы данных Си
- •Логический тип
- •4.1.8. Операции и выражения
- •Операции присваивания
- •Арифметические операции
- •Логические операции
- •4.1.10. Структура программы
- •4.1.11. Ввод и вывод данных
- •Функции ввода- вывода
- •Объектно-ориентированные средства ввода-вывода.
- •4.2. Операторы управления
- •4.2.1. Понятие алгоритма
- •4.2.2. Изображение алгоритма в виде блок-схемы
- •2.3. Составной оператор
- •2.4. Операторы ветвления
- •If (выражение) оператор;
- •4.2.5. Примеры программ
- •4.2.6. Оператор варианта
- •4.2.7. Алгоритмы циклической структуры
- •Оператор цикла с предусловием
- •Оператор цикла с постусловием
- •Оператор цикла с параметром
- •Операторы передачи управления
- •4.2.8. Решение задач с использованием циклов
- •4.3. Обработка массивов
- •4.3.1. Описание массивов
- •4.3.2. Основные операции над массивами
- •4.3.3. Ввод-вывод элементов массива
- •4.3.4. Вычисление суммы элементов массива
- •4.3.5. Вычисление произведения элементов массива
- •4.3.6. Поиск максимального элемента и его номера
- •4.3.7. Сортировка элементов в массиве
- •4.3.8. Удаление элемента из массива
- •4.3.9. Решение задач с использованием массивов
- •4.4. Обработка матриц
- •4.4.1. Ввод-вывод матрицы
- •4.4.2. Примеры алгоритмов обработки матрицами
- •4.5.1. Передача параметров в функцию
- •4.5.2. Возврат результата с помощью оператора return
- •4.6. Указатели и динамические массивы
- •5. Примеры организации вычислительного процесса
- •5.1 Организация разветвляющегося вычислительного процесса
- •5.2. Организация циклов с известным числом повторений»
- •Блок-схема
- •Текст программы
- •Блок-схема
- •Текст программы
- •5.4.Обработки одномерного массива с перестановкой элементов
- •5.5. Обработка матрицы.
- •Литература
4.3.2. Основные операции над массивами
Для обращения к элементу массива указывают его имя, а затем в квадратных скобках индекс:
имя_массива [индекс]
Например:
const int n=15; double C[n],S;
S=C[0]+C[n-1];
Массиву, как и любой другой переменной, можно присвоить начальное значение (инициализировать):
тип имя [размерность]={элемент_0, элемент_1, …};
Например, формируется массив из шести вещественных чисел, значения элементам присваиваются по порядку:
float a[6]={1.2,(float)3/4,5./6,6.1};
Элементы значения, которых не указаны, обнуляются; для элементов a[1] и a[2] выполняется преобразование типов
a[0]=1.2, a[1]=(float)3/4=0.75, a[2]=5./6=0.83333,
a[3]=6.1, a[4]=0, a[5]=0,
Все манипуляции с массивами в С++ осуществляются поэлементно. Организовывается цикл, в котором происходит последовательное обращение к нулевому, первому, второму и т.д. элементам. В общем виде алгоритм обработки массива показан на рис. 15:
Рис. 15. Алгоритм обработки массива
4.3.3. Ввод-вывод элементов массива
Ввод и вывод массивов так же осуществляется поэлементно (рис. 16-17).
Рис. 16. Алгоритм ввода массива. Рис. 17. Алгоритм вывода массива
Варианты ввода массива:
Вариант 1. Ввод массива с помощью функции scanf.
int main()
{
float x[10]; int i,n;
printf("\n N="); scanf("%d",&n);
printf("\n INPUT X \n");
for(i=0 ; i<n; scanf("%f",&x[i]), i++); }
Вариант 2. Ввод массива с помощью оператора cin.
int main()
{ int X[10],N,i;
cout<<"\n N="; cin>>N;
for (i=0; i<N; cout<<"\n X["<<i<<"]=",
cin>>X[i], i++); }
Варианты вывод массива:
Вариант 1. Вывод массива в виде строки.
for(i=0; i<n; printf("%f \t",X[i]), i++);
Вариант 2. Вывод массива в виде столбца.
for(i=0; i<n; printf("\n %f ",X[i]), i++);
Вариант 3. Вывод массива в виде строки.
for (i=0;i<N; cout <<"\t X["<<i<<"]="<<X[i],i++);
Вариант 4. Вывод массива в виде столбца.
for (i=0;i<N; cout <<"\n X["<<i<<"]="<<X[i];i++)
4.3.4. Вычисление суммы элементов массива
Дан массив X, состоящий из n элементов. Найти сумму элементов этого массива (рис. 18).
Рис. 18. Алгоритм вычисления суммы элементов массива
Фрагмент программы:
for (S=0, i=0; i<N; S+=X[i], i++); cout<<"S="<<S<<"\n";
4.3.5. Вычисление произведения элементов массива
Дан массив X, состоящий из n элементов. Найти произведение элементов этого массива (рис. 19).
Рис. 19. Алгоритм вычисления произведения элементов в массиве.
Фрагмент программы:
for (P=1, i=0; i<N; P*=X[i], i++); cout<<"P="<<P<<"\n";
4.3.6. Поиск максимального элемента и его номера
Дан массив X, состоящий из n элементов. Найти максимальный элемент массива и номер (рис. 20).
Рис. 20. Алгоритм пориска наибольшего элемента в массиве
Фрагмент программы:
for (Max=X[0],Nmax=0,i=0;i<n;i++)
if (Max<X[i])
{ Max=X[i]; Nmax=i; }
cout<<"Max="<<Max<<"\n";
cout<<"Nmax="<<Nmax<<"\n";
Алгоритм поиска минимального элемента в массиве отличается тем, что в условном блоке и в конструкции if текста программы знак поменяется с < на >.
4.3.7. Сортировка элементов в массиве
Сортировка это процесс упорядочения элементов в массиве в порядке возрастания или убывания их значений:
Y[0] £ Y[1] £… £ Y[n-1] или Y[0] ³ Y[1] ³… ³ Y[n-1].
Сортировка пузырьковым методом основана на выполнении в цикле операций сравнения и при необходимости обмена соседних элементов (рис. 21). Для преобразования массива Y, состоящего из n элементов, необходимо просмотреть его n–1 раз, каждый раз уменьшая диапазон просмотра на 1 элемент (рис. 22).
Рис. 21. Схема обмена элементов
Рис. 22. Алгоритм сортировки массива
в порядке возрастания элементов
Фрагмент программы:
int main()
{
int y[10],n,i,b,j;
cout<<"\n N="; cin>>n;
for (i=0;i<n; cout<<"\n Y["<<i<<"]="; cin>>y[i]; i++);
for(j=1;j<n;j++)
for(i=0;i<n-j;i++)
if (y[i]>y[i+1])
{
b=y[i];
y[i]=y[i+1];
y[i+1]=b;
}
for (i=0;i<n; cout<<y[i]<<"\t", i++);
return 0;
}
Для перестановки элементов в массиве по убыванию необходимо при сравнении элементов массива заменить знак > на <.