Ввод – вывод одномерного массива




 

Для ввода 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).

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-05-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: