Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВСЯ ТЕОРИЯ по Си.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
614.4 Кб
Скачать

Обработка массивов

Массивом называется упорядоченная совокупность однотипных данных, имеющая общее имя.

Объявление массива:

int m[10]; //одномерный массив из 10 целых элементов

float a[4][5]; //двумерный массив из 4 строк и 5 столбцов (таблица)

Элементы массива пронумерованы по порядку и хранятся в соседних ячейках памяти. Поэтому к элементам массива можно обращаться по номеру:

m[0] m[1] m[2] и т.д. или через указатели.

Любая обработка массива, в том числе ввод и вывод, происходит при помощи цикла. Двумерные массивы обрабатываются при помощи двойного вложенного цикла.

Пример 15(а).

Вычислить сумму и количество элементов одномерного массива, значения которых кратны 3.

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

void main()

{

int m[10]; //объявление одномерного массива из 10 элементов

int i,sum=0,k=0;

clrscr();

randomize(); //инициализация генератора случайных чисел

for (i=0;i<10;i++) //цикл для перебора номеров массива

{

m[i]=random(100)-50; //элементам массива присвоим случайные значения

printf("%5i",m[i]); //вывод элементов массива на экран

}

printf("\n"); //перевод строки

for (i=0;i<10;i++) // цикл для перебора номеров массива

{

if (m[i]%3==0)

{k++; //вычисляем количество элементов кратных 3

sum+=m[i];} //вычисляем сумму элементов кратных 3

}

printf("k=%i sum=%i", k, sum); //вывод ответов

getch();

}

Пример 15(б).

Приведем пример программы с тем же заданием, но массив будем обрабатывать с помощью указателей.

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

void main()

{

int m[10]; //объявление одномерного массива из 10 элементов

int i,sum=0,k=0;

int *p1,*p2; // объявление указателей на целый тип

clrscr();

randomize(); //инициализация генератора случайных чисел

p1=&m[0]; //установим указатель 1 на начало массива

p2=&m[9]; //установим указатель 2 на конец массива

while (p1<p2) //цикл пока не дошли до конечного адреса

{

*p1=random(100)-50; //элементам массива присвоим случайные значения

printf("%5i", *p1); //вывод элементов массива на экран

p1++; //добавление адреса

}

printf("\n"); //перевод строки

p1=&m[0]; //заново установим указатель 1

while (p1<p2) //цикл пока не дошли до конечного адреса

{

if (*p1%3==0)

{k++; //вычисляем количество элементов кратных 3

sum+=*p1; //вычисляем сумму элементов кратных 3

p1++;}

}

printf("k=%i sum=%i", k, sum); //вывод ответов

getch();

}

Пример 16(а).

Вычислить сумму положительных элементов двумерного массива.

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

void main()

{

int m[4][5]; //объявление двумерного массива из 4 строк и 5 столбцов

int i,sum=0,k=0;

clrscr();

randomize(); //инициализация генератора случайных чисел

for (i=0;i<4;i++) //цикл для перебора номеров строк массива

{

for (j=0; j<5; j++) //цикл для перебора номеров столбцов массива

{

m[i][j]=random(100)-50; //элементам массива присвоим случайные значения

printf("%5i",m[i][j]); //вывод элементов массива на экран

}

printf("\n"); //перевод строки, чтобы получилась таблица

}

for (i=0;i<4;i++) //цикл для перебора номеров строк массива

{

for (j=0; j<5; j++) //цикл для перебора номеров столбцов массива

{

if (m[i][j]>0)

sum+=m[i][j]; //вычисляем сумму положительных элементов

}

}

printf("sum=%i", sum); //вывод ответа

getch();

}

Пример 16(б).

Вычислить сумму положительных элементов каждого столбца двумерного массива.

for (j=0; j<5; j++) //цикл для перебора номеров столбцов массива

{ sum=0; //для каждого столбца сумма считается с нуля

for (i=0;i<4;i++) //цикл для перебора номеров строк массива

{if (m[i][j]>0)

sum+=m[i][j]; //вычисляем сумму положительных элементов

}

printf("столбец %i sum=%i", j, sum); //вывод суммы каждого столбца

}

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