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

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-1;I++)

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

if (A[I]<A[J])

{

k=A[I];

A[I]=A[J];

A[J]=k;

}

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

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

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

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

}

Пример: Дан массив A[N]. Найти произведение положительных элементов первой половины массива и сумму отрицательных элементов второй половины массива. Использовать цикл while.

#include<stdio.h>

#include<conio.h>

Void main()

{

const N=10;

int I,P,S;

static int A[N];

printf("Введите %d чисел\n",N);

I=0;

P=1;

while(I<N/2)

{ scanf("%d",&A[I]);

if (A[I]>0) P=P*A[I];

I++;}

I=N/2+1;

S=0;

while (I<N)

{ scanf("%d",&A[I]);

if (A[I]<0) S=S+A[I];

I++;}

printf("P= %d\n",P);

printf("S= %d",S);

getch();

}

В языке С++ определены только одномерные массивы, но поскольку элементом массива может быть массив, можно определить и многомерные массивы. Они формализуются списком КонстантныхВыражений следующих за идентификатором массива, причем каждое КонстантноеВыражение заключается в свои квадратные скобки.

Форма записи многомерного массива:

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

Каждое КонстантноеВыражение в квадратных скобках определяет число элементов по данному измерению массива, так что объявление двухмерного массива содержит два КонстантныхВыражения, трехмерного - три и т.д. Отметим, что в языке С++ первый элемент массива имеет индекс равный 0.

Инициализация массива выполняется при помощи заключенного в фигурные скобки списка инициализаторов. Инициализаторы даются по возрастанию индекса массива.

Примеры:

int w[3][3] = { { 2, 3, 4 },

{ 3, 4, 8 },

{ 1, 0, 9 } };

int a[2][3]; /* представлено в виде матрицы

a[0][0] a[0][1] a[0][2]

a[1][0] a[1][1] a[1][2] */

В последнем примере объявлен массив w[3][3]. Списки, выделенные в фигурные скобки, соответствуют строкам массива, в случае отсутствия скобок инициализация будет выполнена неправильно.

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

В языке С++ можно использовать сечения массива, как и в других языках высокого уровня (PL1 и т.п.), однако на использование сечений накладывается ряд ограничений. Сечения формируются вследствие опускания одной или нескольких пар квадратных скобок. Пары квадратных скобок можно отбрасывать только справа налево и строго последовательно. Сечения массивов используются при организации вычислительного процесса в функциях языка С++, разрабатываемых пользователем.

Примеры:

int s[2][3];

Если при обращении к некоторой функции написать s[0], то будет передаваться нулевая строка массива s.

int b[2][3][4];

При обращении к массиву b можно написать, например, b[1][2] и будет передаваться вектор из четырех элементов, а обращение b[1] даст двухмерный массив размером 3 на 4. Нельзя написать b[2][4], подразумевая, что передаваться будет вектор, потому что это не соответствует ограничению, наложенному на использование сечений массива.

Пример: Дан двумерный массив A[N][M]. Выполнить сортировку массива по возрастанию.

#include<stdio.h>

#include<conio.h>

main()

{

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

static int A[N][M];

static int B[N*M]; /*описание масcивов А,В,С*/

int I,J,K;

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

K=1;

printf("Bведите элементы массива А[%d][%d]\n ",N,M);

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

for (J=0;J<M;J++)

{

scanf("%d",&A[I][J]);

B[K]=A[I][J];

K=K+1;

}

for (I=0;I<N*M-1;I++)

for (J=I+1;J<N*M;J++)

if (B[I]<B[J])

{ K=B[I];

B[I]=B[J];

B[J]=K;

}

K=1;

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

for (J=0;J<M;J++)

{

A[I][J]=B[K];

K=K+1;

}

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

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

{

for (J=0;J<M;J++)

printf("%4d",A[I][J]);

printf("\n");

}

getch();

}

Пример: Дан двумерный массив NxM целых чисел, где N=2, а M=3. Сформировать массив В, состоящий из четных максимальных элементов каждой строки массива, и массив С, состоящий из максимальных нечетных элементов каждой строки массива.

#include<stdio.h>

#include<conio.h>

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