Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Л6.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
168.45 Кб
Скачать

Лекция №6

7.Сложные типы данных

7.1. Массивы

Массив - это структурированный тип данных, состоящий из фиксированного числа элементов, имеющих один и тот же тип. Можно использовать и любой другой раннее описанный тип, поэтому вполне правомерно существование массивов структур(записей), массивов массивов и т.д. Число элементов массива фиксируется при описании и в процессе выполнения программы не меняется. Из объявления массива компилятор должен получить информацию о типе элементов массива и их количестве. Массивы бывают одномерными, двухмерными и т.д.

Объявление массива имеет два формата:

СпецификаторТипа ИмяМассива [КонстантноеВыражение];

СпецификаторТипа ИмяМассива [ ];

СпецификаторТипа задает тип элементов объявляемого массива. Элементами массива не могут быть функции и элементы типа void.

КонстантноеВыражение в квадратных скобках задает количество элементов массива. КонстантноеВыражение при объявлении массива может быть опущено в следующих случаях:

• при объявлении массив инициализируется,

• массив объявлен как формальный параметр функции,

• массив объявлен как ссылка на массив, явно определенный в другом файле.

Пример:

double b[10]; /* вектор из 10 элементов имеющих тип double */

float f[4]={3.5,6.8,9.0,6};

float f1[]={2.3,5.6,6.7,4.2,3};

Пример: Найти максимальный элемент массива A[10]

#include<stdio.h>

main()

{

const N=10; /*размерность масcива А*/

static float A[N]; /*описание масcива А */

float MAX ;

int I ;

//ввод элементов массива

printf("Bведите через пробел %d чисел\n ",N);

for (I=1;I<=N;I++) scanf("%f",&A[I]);

// нахождение наибольшего элемента последовательности

MAX =A[1];

for (I=2;I<=N;I++)

if (A[I]>MAX) MAX =A[I];

printf("\nMАX=%.3f",MAX);

}

Самостоятельная проработка:

Пример: Дан массив А[10]. Выполнить сортировку первой половины массива в порядке убывания (метод обмена), а вторую – в порядке возрастания (метод выбора).

#include<stdio.h>

void main()

{

const N=10; /*размерность масcива А*/

static float A[N]; /*описание масcива А */

float k ;

int I,J,m ;

//ввод элементов массива

printf("Bведите через пробел %d чисел\n ",N);

for (I=0;I<N;I++) scanf("%f",&A[I]);

// Сортировка методом обмена

for(I=0;I<N/2-1;I++)

for (J=0;J<N/2-1;J++)

if (A[J]<A[J+1]) /*Сравнение пары соседних чисел A[J] и A[J+1]*/

{

k=A[J]; /*Перестановка A[J] и A[J+1] местами */

A[J]=A[J+1];

A[J+1]=k;

}

// Сортировка методом выбора

for(I=N-1;I>N/2+2;I--)

{

m=N/2+1; /* Индекс первого элемента */

for (J=N/2+1;J<I;J++)

if (A[J]>A[m]) m=J;

k=A[m]; /*Перестановка A[m] и A[I] местами */

A[m]=A[I];

A[I]=k;

}

//вывод отсортированного массива

printf("\nОтсортированный массив\n");

for (I=0;I<N;I++)

printf("%8.2f\n",A[I]);

}

Пример: Дан массив А[10]. Выполнить сортировку массива в порядке возрастания.

#include<stdio.h>

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]