Поиск минимального (максимального) элемента в массиве
Условно первый (с номером 0) элемент массива считается минимальным (максимальным), затем в цикле путем сравнения находим фактическое значение.
min=A[0]; // начальное значение минимума
imin=0; // начальное значение индекса
for (i=0; i<n; i++)
if (A[i]<min) { min=A[i]; imin=i; }
printf (“min=A[%d]=%d\n”, imin, A[imin]);
Если в массиве несколько элементов имеют минимальное значение, то в imin будет запоминаться индекс первого из них. Если проверять условие A[i]<=min, то – последнего.
Для поиска максимального элемента нужно в улови заменить знак < на знак >.
Примеры решения
1. Ввести массив из n целых чисел. Вычислить сумму (произведение) и количество элементов, кратных 3 и не кратных 2, или вывести сообщение «Таких значений нет».
#include <stdio.h>
#include<conio.h>
void main()
{ const int n=10;
int a[n], s=0, k=0, i;
// s=0; k=0; - начальное значение суммы и количества
/* для произведения вместо s задать
long p=1; начальное значение произведения; long, т.к. произведение быстро растет и выходит за пределы типа int (32767) */
clrscr();
puts("Vvedite massiv");
for (i=0; i<n; i++)
{ printf("a[%d]=",i+1);
scanf("%d",&a[i]);
}
for (i=0; i<n; i++)
// проверка на кратность 3 и не кратность 2 //
if (a[i]%3==0 && a[i]%2!=0) // % - остаток от деления
{ s=s+a[i]; // накапливание суммы
// p=p*a[i]; накапливание произведения
k++; // накапливание количества
}
puts("\nResult");
if (k= =0) puts("net");
else
// \t – табуляция (запрограммированное число пробелов)
printf("s=%d \t k=%d\n",s,k);
// или для произведения
// printf("p=%ld \t k=%d\n",p,k);
// %ld – формат вывода данных типа long (длинный целый)
getch();
}
Если функция getch(); не используется, то просмотреть результат можно нажатием комбинации клавиш Alt-F5.
Проверка, что элемент массива заканчивается заданной цифрой m (ввести с клавиатуры):
puts(“Vvedite zadannoe chislo m”);
scanf(“%d”,&m);
for (i=0; i<n; i++)
if (a[i] % 10 = = m) ….. /* остаток от деления на 10 равен последней цифре числа. Если этот остаток равен m, то …*/
Проверка, что элементы массива являются квадратами некоторого заданного числа P(здесь обязательно требуется подключение файла math.h в разделе #include):
puts(“Vvedite zadannoe chislo P”);
scanf(“%d ”,&P);
for (i=0; i<n; i++)
if (sqrt(a[i]) = = P) // квадратный корень из элемента массива = P
2. В одномерном массиве из n элементов найти и вывести значение и номер первого отрицательного значения или вывести сообщение об отсутствии отрицательных чисел.
При решении данной задачи может потребоваться досрочный выход из цикла (при наличии отрицательного числа), т. е. оператор break.
#include <stdio.h>
#include<conio.h>
#include <stdlib.h>
void main()
{ const int n=10;
int a[n], i;
int f=0; // флажок указывает на успешность поиска
// изначально 0, т. к. еще ничего не найдено
// заполним массив случайными числами
randomize();
for (i=0; i<n; i++)
{ a[i]=20 – random(100);
printf (“%d\t”, a[i]);
}
printf (“\n”); // перевод курсора на новую строку экрана
// начало поиска
for (i=0; i<n; i++)
if (a[i]<0)
{ f=1; //устанавливаем флажок в состояние «истина»
printf (“a[%d]=%d\n”, i, a[i]);
break;
}
if (f= =0) puts (“<0 нет”);
getch();
}
Для поиска значения и номера последнего отрицательного значения массив лучше рассматривать с конца, т. е. при поиске записать for (i=n-1; i>=0; i--)
Порядок выполнения работы
1. Изучить теоретические сведения.
2. Ответить на контрольные вопросы.
3. Выполнить задание.
Контрольные вопросы
1. Что такое массив?
2. Почему индекс последнего элемента массива на 1 меньше его размера?
3. Что в записи A[4]=12 является именем массива, что – индексом, а что – значением элемента?
4. Какой специальный символ используются для вывода данных в строку экрана?
5. Почему при поиске какого-либо элемента в массиве нельзя обойтись без цикла?
Задания для выполнения
Часть 1.
1. Ввести одномерный массив из nэлементов. Вычислить среднее арифметическое значение элементов массива, имеющих четные отрицательные значения,или вывести сообщение об отсутствии в массиве таких значений.
2. Ввести одномерный массив из n элементов. Вычислить произведение и количество элементов, находящихся в интервале от AдоB,или вывести сообщение об отсутствии в массиве таких значений.
3. Ввести массив из n целых чисел. Вычислить среднее арифметическое значение элементов, являющихся нечётными числами, или вывести сообщение «Таких значений нет».
4. Ввести массив из n целых чисел. Вычислить произведение и количество элементов, кратных 3 и некратных 5, или вывести сообщение «Таких значений нет».
5. Ввести массив из n целых чисел. Найти и вывести те элементы, которые при делении на 7 дают остаток 2 или 5, или вывести сообщение «Таких значений нет».
6. Ввести массив из n целых чисел. Найти количество и сумму тех элементов, которые делятся на 5 и не делятся на 7, или вывести сообщение «Таких значений нет».
7. Ввести массив из n целых чисел. Вычислить произведение элементов, кратных заданному числу m(ввести с клавиатуры), или вывести сообщение «Таких значений нет».
8. Ввести массив из n элементов. Получить сумму и количество элементов, принадлежащих отрезку [3,17], или вывести сообщение «Таких значений нет».
9. Ввести массив А из n элементов. Найти и вывести минимальное из А0, А2, А4, … и максимальное из А1, А3, А5, …
10. Ввести массив из n элементов. Получить сумму тех членов массива, которые нечётны и положительны, или вывести сообщение «Таких значений нет».
11. Ввести массив из n целых чисел. Вычислить среднее арифметическое значение элементов, порядковые номера которых совпадают со значением этого элемента, или вывести сообщение «Таких значений нет».
12. Ввести массив из n целых чисел. Вывести те значения, которые заканчиваются заданной цифрой (ввести с клавиатуры), или вывести сообщение «Таких значений нет».
13. Ввести массив из n целых чисел. Найти сумму тех из них, которые являются квадратами некоторого заданного числа m, или вывести сообщение «Таких значений нет».
14. Ввести массив из n элементов и некоторое число P. Вывести номера тех элементов, модуль значений которых больше этого числа, или вывести сообщение «Таких значений нет».
15. Ввести массив из n элементов, в котором есть по крайней мере два отрицательных числа. Вычислить произведение и количество элементов, находящихся между первым и последним отрицательным значениями.
Часть 2.
1. Ввести массив из n элементов и два индекса. Поменять местами элементы, находящиеся под данными индексами. Вывести преобразованный массив.
2. Ввести массив из n вещественных чисел. Вычислить их среднее арифметическое значение и найти элемент, значение которого наиболее близко к среднему арифметическому.
3. Ввести массив из n элементов, содержащий хотя бы одно отрицательное значение. Вычислить среднее арифметическое значение чисел, расположенных после первого отрицательного элемента.
4. Ввести массив из n элементов. Найти в нем максимальное значение. Заменить значения элементов массива путем вычитания их из максимального. Вывести преобразованный массив.
5. Ввести массив n вещественных чисел. Найти в нем минимальное значение и разделить на него каждый элемент. Вывести преобразованный массив или сообщение «min=0».
6. Ввести массив из n вещественных чисел и числа a и b. Заменить нулями все элементы, значения которых не принадлежат отрезку [a, b], или вывести сообщение «Таких значений нет».
7. Ввести массив из n элементов, в котором есть хотя бы одно положительное значение. Вычислить произведение и количество элементов, находящихся до первого положительного. Если положительное значение первое, то вывести сообщение «A[0]>0».
8. Ввести массив из n различных целых чисел. Поменять местами наибольшее и наименьшее значения. Вывести преобразованный массив.
9. Ввести массив из n элементов и некоторое число P. Заменить все, большие P, элементы массива этим числом. Вычислить количество таких элементов. Если оно больше нуля, вывести преобразованный массив.
10. Ввести массив из n элементов. Среди них есть равные. Найти его первое наибольшее значение и заменить его нулем. Вывести преобразованный массив.
11. Ввести массив из n элементов. Вычислить сумму модулей элементов массива, расположенных после минимального по модулю элемента.
12. Ввести массив из n вещественных чисел. Все отрицательные числа увеличить на 0.5, а все неотрицательные на 0.1. Вывести преобразованный массив.
13. Ввести массив из n вещественных чисел. Вычислить их среднее арифметическое значение и вычесть его из каждого элемента. Вывести преобразованный массив.
14. Ввести массив из n целых чисел. Заменить нулями элементы, модуль которых при делении на p даёт в остатке q. (Значения pи qввести с клавиатуры). Вывести преобразованный массив или сообщение «Таких значений нет».
15. Ввести массив из n различных чисел. Найти в нем максимальное значение и поменять его местами со вторым элементом. Вывести преобразованный массив.
ЛАБОРАТОРНАЯ РАБОТА № 14
МНОГОМЕРНЫЕ МАССИВЫ
Цель работы:получение практических навыков в работе с двумерными массивами.