Для ввода n элементов одномерного массива, назовем его А, требуется организовать цикл, для ввода каждого i – го элемента, где i=0,1,2, …, n–1. Аналогичный цикл требуется организовать и для вывода элементов массива. На рисунке 2.2 изображена графическая схема ввода и вывода элементов массива.
![]() | /* Ввод – вывод статического массива*/ #include <stdio.h> #define n 50; void main() { int n,i; float A[n]; puts("Введите число элементов массива "); scanf("%d",&n); // Ввод массива for (i=0; i<n; i++) { printf("Введите число A[%2d]=",i); scanf("%f",&A[i]); } // Вывод массива puts("Массив A"); for(i=0;i<n;i++) printf("%6.3f ",A[i]); printf("\n"); } |
Рисунок 2.2 Алгоритм и программа ввода – вывода статического массива
Ввод–вывод динамического массива осуществляется по тому же алгоритму. Из приведенного ниже примера программы ввода и вывода динамического массива видно, что отличие заключается лишь в описании массива.
/* Ввод – вывод динамического массива*/
#include <stdio.h>
void main()
{
int n,i;
puts("Введите число элементов массива a");
scanf("%d",&n);
float *a=new float[n]; // Описание динамического массва
// Ввод массива
for (i=0;i<n;i++)
{ printf("Введите число a[%2d]=",i);
scanf("%f",a+i); // или scanf("%f",&a[i]);
}
// Вывод массива
puts("Массив a");
for(i=0;i<n;i++)
printf("%.3f ",*(a+i)); // или printf("%.3f ",a[i]);
printf("\n");
delete[] a; // Освобождение памяти выделенной под массив
}
Перестановка двух элементов массива
Для перестановки двух элементов массива x[] с индексами k и m, необходимо использование дополнительной переменной (tmp), для хранения копии одного из элементов (рисунок 2.3 а), но можно обойтись и без использования дополнительной переменной tmp. В этом случаи алгоритм перестановки имеет следующий вид (рисунок 2.3 б).
В большинстве случаев предпочтительнее использовать первый способ, поскольку он не содержит дополнительных вычислений, что особенно важно при перестановке вещественных чисел.
![]() | tmp=x[k]; x[k]=x[m]; x[m]=tmp; | ![]() | x[k]=x[k]+x[m]; x[m]=x[k]-x[m]; x[k]=x[k]-x[m]; |
(а) | (б) |
Рисунок 2.3 Алгоритм и фрагмент программы перестановки двух элементов массива c использованием дополнительной
переменной (а) и без нее (б)
Пример 2.1
Переставить первый и последний элемент массива x[] местами. Количество элементов массива n.
Решение
В С нумерация элементов массива начинается с нуля, поэтому номер последнего элемента массива (n –1).
1 способ: tmp=x[0]; x[0]=x[n-1]; x[n-1]=tmp;
2 способ: x[0]=x[0]+x[n-1]; x[n-1]=x[0]-x[n-1]; x[0]=x[0]-x[n-1];
Пример 2.2
Поменять местами заданный элемент массива x[k] с последующим.
Решение
При решении этой задачи необходимо учитывать, что если заданный элемент массива x[k] является последним, то обмен выполнить не возможно, поскольку последующий элемент отсутствует.
![]() | if(k == n-1) puts("Обмен не возможен."); else { tmp=x[k]; x[k]=x[k+1]; x[k+1]=tmp; } |
Рисунок 2.4 Алгоритм и фрагмент программы перестановки
заданного элемент массива x[k] с последующим
При перестановке с предыдущим элементом, обмен невозможен если заданный элемент является первым (k=0).