Слайд 1Лекция 11.
Массивы – решение простых задач (продолжение)
дисциплина «Программирование»
Козьминых Н.М.
Слайд 2Этапы решения
Козьминых Н.М.
Сокращенная форма:
ввод исходных данных;
решение задачи;
вывод результата на экран.
Развернутая
форма для задач с массивами:
объявление массива;
выделение памяти для необходимого количества
элементов массива;
определение значений элементов массива;
вывод исходного массива на экран;
выполнение алгоритма;
вывод результата на экран.
Слайд 31. Нахождение какого-либо значения
Козьминых Н.М.
1.1. Найти сумму отрицательных элементов
Алгоритм:
А) переменную
накопитель (s) обнуляем
Б) в цикле for просматриваем все элементы массива
с начала и если текущий элемент массива меньше нуля (отрицательный), то увеличиваем значение переменной на значение текущего элемента массива
Слайд 41. Нахождение какого-либо значения
Козьминых Н.М.
1.1. Найти сумму отрицательных элементов
void task(){
int s = 0, i;
for (i = 0; i
< n; i++)
if (A[i] < 0)
s += A[i];
}
Слайд 51. Нахождение какого-либо значения
Козьминых Н.М.
1.2. Подсчитать количество элементов, находящихся в
указанном диапазоне
Алгоритм:
А) вводим значения переменных, которые будут определять указанный
диапазон (z1 и z2), причем z1 < z2
Б) переменную счетчик (m) обнуляем
В) в цикле for просматриваем все элементы массива с начала и если текущий элемент находится в указанном диапазоне (z1 < Ai < z2), то увеличиваем значение счетчика на единицу
Слайд 61. Нахождение какого-либо значения
Козьминых Н.М.
1.2. Подсчитать количество элементов, находящихся в
указанном диапазоне
void task(){
int m = 0, i, z1, z2;
z1 = scr1.Value;
z2 = scr2.Value;
for (i = 0; i < n; i++)
if (A[i] > z1 && A[i] < z2)
m++;
}
Слайд 71. Нахождение какого-либо значения
Козьминых Н.М.
1.3. Найти значение последнего положительного элемента
Алгоритм:
А)
в цикле for просматриваем все элементы массива с конца (т.к.
нужно найти последний элемент) и если текущий элемент больше нуля (положительный), то прерываем выполнение цикла
Слайд 81. Нахождение какого-либо значения
Козьминых Н.М.
1.3. Найти значение последнего положительного элемента
void
task(){
int i;
for (i = n-1; i >= 0;
i--)
if (A[i] > 0)
break;
}
Слайд 91. Нахождение какого-либо значения
Козьминых Н.М.
1.4. Найти индекс второго нулевого элемента
Алгоритм:
А) переменную счетчик (m) обнуляем
В) в цикле for просматриваем все
элементы массива с начала и
если текущий элемент равен нулю, то увеличиваем значение счетчика на единицу
если значение счетчика равно 2 (найден второй нулевой элемент), то прерываем выполнение цикла
Слайд 101. Нахождение какого-либо значения
Козьминых Н.М.
1.4. Найти индекс второго нулевого элемента
void task() {
int m = 0, i;
for (i
= 0; i < n; i++)
{
if (A[i] == 0)
m++;
if (m == 2)
break;
}
}
Слайд 112. Изменение значений элементов массива
Козьминых Н.М.
2.1. Элементы с нечетными номерами
умножить на второй элемент
Алгоритм:
А) в цикле for просматриваем все
элементы массива с начала (с первого элемента (индекс 0, а номер 1), т.к. номера нечетные) и текущему элементу массива присваиваем произведение текущего элемента и второго элемента (индекс 1)
Слайд 122. Изменение значений элементов массива
Козьминых Н.М.
2.1. Элементы с нечетными номерами
умножить на второй элемент
void task() {
int i;
for
(i = 0; i < n; i++)
A[i] = A[i] * A[1];
}
Слайд 132. Изменение значений элементов массива
Козьминых Н.М.
2.2. Элементы с четными индексами
увеличить на 4-й элемент
Алгоритм:
А) переменной m присваиваем значение четвертого элемента
массива (индекс 3) – это необходимо сделать, иначе после того как к 4–му элементу прибавим 4-ый, то к 6-му будет прибавляться двойное значение 4-го элемента, что не соответствует условию задачи
Б) в цикле for просматриваем все элементы массива с начала (со второго элемента (индекс 1), т.к. индексы четные) и текущий элемент массива увеличиваем на переменную m (индекс 1)
Слайд 142. Изменение значений элементов массива
Козьминых Н.М.
2.2. Элементы с четными номерами
увеличить на 4-й элемент
void task(){
int i, m;
m =
A[3];
for (i = 1; i < n; i+=2)
A[i] += m;
}
Слайд 15Вопросы…
Спасибо за внимание
Козьминых Н.М.