Алгоритмы обработки массивов. Решение задач по обработке массивов исходных данных

Содержание

Слайд 2

Заполнение массива

Ввод данных в массив может осуществляться множеством способов. Все зависит

Заполнение массива Ввод данных в массив может осуществляться множеством способов. Все зависит
от задачи.
Ввод элементов вручную с клавиатуры
Заполнение массива случайными числами
Заполнение массива в процессе вычислений
Чтение элементов массива из файла
Элементы массива могут поступать через порт с внешнего устройства (???).

Слайд 3

Заполнение массива случайными числами

Функция стандартной библиотеки языка С: rand()
int rand(void); - генерирует

Заполнение массива случайными числами Функция стандартной библиотеки языка С: rand() int rand(void);
псевдослучайное на интервале 0 RAND_MAX (= 32767, но зависит от реализации языка).

Числа 0…9
rand()%10

Числа 1…9
rand()%10 + 1

Последовательность псевдослучайная, но всегда одинаковая !!!

Исправим ситуацию:
void srand (unsigned int seed);
time_t time (time_t* timer);

srand(time(NULL));

Слайд 4

Заполнение массива случайными числами

//от 1 до 10
srand((unsigned)time(NULL));
for (int i = 0; i

Заполнение массива случайными числами //от 1 до 10 srand((unsigned)time(NULL)); for (int i
< n; i++ ) A[i] = rand()%10+1;

//от -20 до 20
srand((unsigned)time(NULL));
for (int i = 0; i < n; i++ ) A[i] = rand() % 41-20;

//на отрезке от a до b
srand(time(NULL)*1000);
for (int i=0; i {
A[i]=(rand()*1.0/(RAND_MAX)*(b-a)+a);
}

(см. Example3, Project FillingArray)

Слайд 5

Заполнение массива числами из файла

//создать поток для чтения данных из файла input.txt
ifstream

Заполнение массива числами из файла //создать поток для чтения данных из файла
in("input.txt");
//проверка существования файла
if (!in)
{
cout << "File not found\n";
return 1;
}
//чтение чисел из файла и их запись в массив
for(int i=0; !in.eof() && i < n; i++) in>>A[i];

(см. Example3, Project FillingArray)

Библиотека fstream (#include )
ifstream - для чтения данных из потока
eof() - end of file

Слайд 6

Операции с большими числами (длинная арифметика)

Задача. Найти произведение длинного целого числа (451095723598)

Операции с большими числами (длинная арифметика) Задача. Найти произведение длинного целого числа
на цифру.

1. Будем хранить каждую цифру числа в массиве

2. Умножим каждую цифру числа на цифру (например на 3)

3. Организуем перенос: в каждой ячейке оставляем младшую цифру хранящегося там числа, а старшую суммируем с числом в левой ячейке

(см. Example3, Project BigInt)

Слайд 7

Операции с большими числами (длинная арифметика)

Задача. Найти сумму двух длинных целых чисел

(см.

Операции с большими числами (длинная арифметика) Задача. Найти сумму двух длинных целых
Example3, Project BigInt)

Слайд 8

Двумерные массивы

(см. Example3, Project TwoDimArray)

Двумерные массивы (см. Example3, Project TwoDimArray)

Слайд 9

Двумерные массивы. Обработка.

//1. Заполнение (построчно, слева направо)
for (int i = 0; i

Двумерные массивы. Обработка. //1. Заполнение (построчно, слева направо) for (int i =
i++)
for(int j = 0; j a[i][j] = something;

i=1..n
j=1..m

Слайд 10

Двумерные массивы. Обработка.

//2. Сумма всех элементов
int sum=0;
for (int i = 0; i

Двумерные массивы. Обработка. //2. Сумма всех элементов int sum=0; for (int i
i++)
for(int j = 0; j sum += a[i][j];

i=1..n
j=1..m

Слайд 11

Двумерные массивы. Обработка.

//3. Сумма элементов строки
int sum=0;
for(int j = 0; j

Двумерные массивы. Обработка. //3. Сумма элементов строки int sum=0; for(int j =
sum += a[3][j];

i=1..n
j=1..m

Слайд 12

Двумерные массивы. Обработка.

//4. Сумма элементов столбца
int sum=0;
for(int i = 0; i

Двумерные массивы. Обработка. //4. Сумма элементов столбца int sum=0; for(int i =
sum += a[i][3];

i=1..n
j=1..m

Слайд 13

Двумерные массивы. Обработка.

//4. Максимальный в каждом столбце
int max[4];
for(int j = 0; i

Двумерные массивы. Обработка. //4. Максимальный в каждом столбце int max[4]; for(int j
j++)
{
max[j]=max[j,0];
for(int i=1;i if (a[i][j] > max[j]) max[j]=a[i][j];
}

i=1..n
j=1..m

Слайд 14

Обработка относительно диагоналей

//Сумма элементов главной диагонали
for(int i = 0; i

Обработка относительно диагоналей //Сумма элементов главной диагонали for(int i = 0; i

//Сумма элементов выше главной диагонали
for(int i = 0; i for(int j = 0; i if (i < j) sum+=a[i][j];

Слайд 15

Обработка относительно диагоналей

//Сумма элементов побочной диагонали
for(int i = 0; i

Обработка относительно диагоналей //Сумма элементов побочной диагонали for(int i = 0; i

//Сумма элементов выше главной диагонали
for(int i = 0; i for(int j = 0; i if (i < j) sum+=a[i][j];

Имя файла: Алгоритмы-обработки-массивов.-Решение-задач-по-обработке-массивов-исходных-данных.pptx
Количество просмотров: 86
Количество скачиваний: 0