Поиск минимального (максимального) элемента в массиве

Условно первый (с номером 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

МНОГОМЕРНЫЕ МАССИВЫ

Цель работы:получение практических навыков в работе с двумерными массивами.