Как найти минимальное число в массиве c
Перейти к содержимому

Как найти минимальное число в массиве c

Массивы в Си.

Когда необходимо хранить и обрабатывать большое количество цифровой информации о множестве объектов удобно использовать массивы информации.Массив – это набор однотипных объектов с общим именем, у каждого объекта есть свой уникальный номер(индекс) с помощью которого можно с ним работать, изменять , запрашивать значение.Каждый такой объект называется элементом массива. Номер элемента массива – это его индекс.

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

Чтобы работать с массивом данных в Си его необходимо сначала, так же как и переменную объявить в начале программы или процедуры.

Нумерация элементов, индексов в Си начинается с 0. Чтобы объявить, массив нужно

Тип массива Имя массива [количество элементов массива -1];

Например, объявлен массив из 5 целочисленных элементов координат точек x

Типы элементов массива могут быть вещественные float, символьные char

Присвоение значений элементам массива.

Задать первоначальные значения элементам массива можно явно при его объявлении для этого используются фигурные скобки и в них через запятую перечисляются значения элементов массива. Число элементов должно совпадать с размером массива

задаст первоначальные значение x[0]=10 ; x[1]=20; x[2]=3; x[3]=5; x[4]=100;

Можно задать значения присвоением

ввести значение элемента массива можно и с клавиатуры

scanf(“%d”, &x[1]); // элемент массива x с индексом 1 будет введен с клавиатуры

Работа с массивами в Си

При работе с массивами удобно использовать цикл for для того чтобы обработать все элементы массива

Общий формат обработки данных всего массива в Си

for ( int i=0; i<размер массива; i++) // пробегаем по всем элементам массива

Имя массива [i]= выражение; // обработка элемента массива с индексом i

Пример программы 20. Вводится массив с клавиатуры, значения элементов массива увеличивается в 2 раза. Получившийся массив выводится на экран.

Задача «Найти среднее значение, минимальный и максимальный элемент массива»

Предположим, что был проведен социологический опрос на какую-либо актуальную тему нашей жизни. Обычно одним из вопросов респонденту является вопрос о его возрасте. При публикации результатов опроса обычно приводятся справочно такие данные, как число опрошенных, средний, минимальный и максимальный возраст участников опроса. Рассмотрим только эту задачу, не касаясь самих результатов опроса.

Далее мы построим алгоритм решения этой простой задачи методами структурного программирования, предложим его реализацию на языке C#, зададим пару вопросов, касающихся смысла задачи, на которые вы постарайтесь ответить.

Решение

Используя принципы структурного программирования выделим в методе static void Main(string[] args) блоки: Ввод данных, Средний возраст, Минимальный и максимальный возраст, Итоги (вывод результатов).

1) При вводе данных сначала задается число участников n и создается массив a (Age — возраст) из n элементов целого типа: int[] a = new int[n];
Затем поочередно вводим с подсказкой возраст каждого человека.

2) Средний возраст находим, предварительно обнулив сумматор m, путем суммирования (в цикле for ) возрастов участников и делением полученной суммы на их число.

3) В другом цикле находим одновременно минимальный и максимальный элементы: до цикла предполагаем, что минимальный и максимальный возраст у первого участника (элемент a[0]), затем в цикле от 1 до (n-1) проверяем условия и изменяем их при необходимости.

4) Вывод результатов — последовательность операторов Console.WriteLine();

Примечание: Отметим, что мы используем всего только три основные конструкции: последовательность, цикл, условие. Циклы вложены в последовательность, условные операторы вложены в цикл. Блоки разделены строками комментариев.

Программная реализация:
Результат:
39
Вопросы на «засыпку»

Подумайте, что будет делать эта программа, если введем возраст более 200 лет или -1 год? Как можно защититься от ошибок ввода?

Рассмотрим следующую типичную задачу — Сортировка массивов.

NEW: Наш Чат, в котором вы можете обсудить любые вопросы, идеи, поделиться опытом или связаться с администраторами.

Массивы

Часто возникает необходимость хранить не одну переменную, а набор однотипных переменных. Например, список учащихся класса – это набор данных строкового типа, координаты вершин многоугольника или коэффициенты многочлена – это набор числовых данных. Для хранения наборов данных используются структуры данных. Основная структура данных – это массив.

— это структура однотипных данных, занимающих непрерывную область памяти. Массив имеет размер — количество элементов в нем. Каждый элемент массива имеет свой номер (также называемый ), обращение к элементу массива осуществляется путем указания его индекса. В языке C++ элементы нумеруются начиная с 0, поэтому последний элемент массива имеет номер на 1 меньше размера массива.

Массив в языке C++ задается следующим образом:

где тип_элементов — произвольный тип данных языка C++, который будут иметь элементы массива, например, int , double и т.д.; идентификатор — имя массива, размер — число элементов в нем.

По стандарту языков C и C++, размер массива должен быть константой, определенной на момент компиляции программы, то есть можно определить массив в виде int A[10 + 5] , но нельзя это сделать в виде int A[n] . Однако, компилятор gcc, которым мы пользуемся, допускает объявления второго вида, но при этом нет никаких гарантий, что ваша программа будет откомпилирована каким-либо другим компилятором.

К элементу массива можно обращаться, как идентификатор [ индекс ] . Например, если было сделано объявление

то таким образом создается 5 элементов массива типа double : A[0] , A[1] , A[2] , A[3] , A[4] .

Пример программы, которая создает массив типа int[] , заданного пользователем размера, считывает с клавиатуры его элементы, затем прибавляет к каждому элементу массива число 1 , затем выводит результат на экран:

В этом примере при помощи // обозначается начало комментария, весь текст после начала комментария и до конца строки компилятором игнорируется. Второй способ объявления комментария: в начале комментария поставить знаки /* , а в конце – */ . Это позволяет делать комментарии, занимающие несколько строк. В языке C допустимы только такие комментарии. ::min()>@w< >— минимальное значение типа @code —> ::max()>@w< >— максимальное значение типа @code. —>

Упражнения

Во всех задачах этого листка (кроме X и Y) небходимо что-то сделать с заданным массивом. Массив вводится, как в примере выше: сначала размер массива, затем его элементы. Программа должна считать массив целиком, выполнить то, что требуется сделать с массивом, вывести результат на экран. Даже если для решения задачи массив не требуется, программа всё равно должна целиком считать массив и сохранить его в памяти.

Все массивы – числовые типа int[] .

A: Четные индексы

Выведите все элементы массива с четными индексами (то есть A[0] , A[2] , A[4] , . ).

Программа должна быть эффективной и не выполнять лишних действий!

Ввод Вывод

B: Четные элементы

Выведите все четные элементы массива.

Ввод Вывод

C: Количество положительных

Найдите количество положительных элементов в данном массиве.

Ввод Вывод

D: Больше предыдущего

Дан массив. Выведите все элементы массива, которые больше предыдущего элемента.

Ввод Вывод

E: Соседи одного знака

Дан массив. Если в нем есть два соседних элемента одного знака, выведите эти числа. Если соседних элементов одного знака нет — не выводите ничего. Если таких пар соседей несколько — выведите первую пару.

Ввод Вывод

F: Больше своих соседей

Дан массив. Определите, сколько в этом массиве элементов, которые больше двух своих соседей и выведите количество таких элементов.

Ввод Вывод

G: Наибольший элемент

Выведите значение наибольшего элемента в массиве

Ввод Вывод

H: Наименьший положительный

Выведите значение наименьшего из всех положительных элементов в массиве. Известно, что в массиве есть хотя бы один положительный элемент, а значения всех элементов массива по модулю не превосходят 1000.

Ввод Вывод

I: Наименьший нечетный

Выведите значение наименьшего нечетного элемента массива, а если в массиве нет нечетных элементов — выведите число 0 .

Ввод Вывод

J: Шеренга

Петя перешёл в другую школу. На уроке физкультуры ему понадобилось определить своё место в строю. Помогите ему это сделать.

Программа получает на вход число N – количество человек в классе. Затем невозрастающая последовательность из N чисел, означающих рост каждого человека в строю. После этого вводится число X – рост Пети. Все числа во входных данных натуральные и не превышают 200.

Выведите номер, под которым Петя должен встать в строй. Если в строю есть люди с одинаковым ростом, таким же, как у Пети, то он должен встать после них.

Ввод Вывод

K: Количество различных элементов

Дан массив, упорядоченный по неубыванию элементов в нем. Определите, сколько в нем различных элементов.

Ввод Вывод

L: Вывести в обратном порядке

Выведите элементы данного массива в обратном порядке, не изменяя сам массив.

Ввод Вывод

M: Переставить в обратном порядке

Переставьте элементы данного массива в обратном порядке, затем выведите элементы данного массива.

Эта задача отличается от предыдущей тем, что вам нужно изменить значения элементов самого массива, поменяв местами A[0] c A[n-1] , A[1] с A[n-2] , а затем вывести элементы массива, начиная с A[0] .

Ввод Вывод

N: Переставить соседние

Переставьте соседние элементы массива ( A[0] c A[1] , A[2] c A[3] и т.д.). Если элементов нечетное число, то последний элемент остается на своем месте.

Ввод Вывод

O: Циклический сдвиг вправо

Циклически сдвиньте элементы массива вправо ( A[0] переходит на место A[1] , A[1] на место A[2] , . последний элемент переходит на место A[0] ).

Используйте минимально возможное количество операций присваивания.

Ввод Вывод

P: Переставить min и max

В массиве все элементы различны. Поменяйте местами минимальный и максимальный элемент этого массива.

Ввод Вывод

Q: Удалить элемент

Дан массив из N элементов и номер элемента в массиве k. Удалите из массива элемент с индексом k, сдвинув влево все элементы, стоящие правее элемента с индексом k.

Программа получает на вход число N, затем N элементов массива, затем число k.

Программа должна вывести N-1 число – элементы массива после удаления k–го элемента.

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

Ввод Вывод

R: Вставить элемент

Дан массив из N чисел, число k и значение C. Необходимо вставить в массив на позицию с индексом k элемент, равный C, сдвинув все элементы имевшие индекс не менее k вправо.

Посколько при этом количество элементов в массиве увеличивается, необходимо сразу же создавать массив размером N+1.

Вставку необходимо осуществлять уже в считанном массиве, не оставляя “свободного” места при считывании, не делая этого при выводе и не создавая дополнительного массива.

Ввод Вывод

S: Количество совпадающих пар

Дан массив. Посчитайте, сколько в нем пар элементов, равных друг другу. Считается, что любые два элемента, равные друг другу образуют одну пару, которую необходимо посчитать.

Ввод Вывод

T: Уникальные элементы

Дан массив. Выведите те его элементы, которые встречаются в массиве только один раз. Элементы нужно выводить в том порядке, в котором они встречаются в массиве.

Ввод Вывод

U: Количество различных элементов — 2

Дан массив. Посчитайте, сколько в нем различных элементов, не изменяя самого массива.

Ввод Вывод

V: Самое частое число

Дан массив. Не изменяя массива и не заводя дополнительного массива определите, какое число в этом массиве встречается чаще всего.

Если таких чисел несколько, выведите любое из них.

Ввод Вывод

W: Сжатие массива

Массив заполнен целыми числами. Требуется “сжать” его, переместив все ненулевые элементы в левую часть массива, не меняя их порядок, а все нули — в правую часть. Порядок ненулевых элементов изменять нельзя, дополнительный массив использовать нельзя, задачу нужно выполнить за один проход по массиву. Распечатайте полученный массив.

Ввод Вывод

X: Кегельбан

\(N\) кеглей выставили в один ряд, занумеровав их слева направо числами от \(1\) до \(N\). Затем по этому ряду бросили \(K\) шаров, при этом \(i\)-й шар сбил все кегли с номерами от \(l_i\) до \(r_i\) включительно. Определите, какие кегли остались стоять на месте.

Программа получает на вход количество кеглей \(N\) и количество бросков \(K\). Далее идет \(K\) пар чисел \(l_i\), \(r_i\), при этом \(1\le l_i\le r_i\le N\).

Программа должна вывести последовательность из \(N\) символов, где \(j\)-й символ есть “ I ”, если \(j\)-я кегля осталась стоять, или “ . ”, если \(j\)-я кегля была сбита.

Ввод Вывод

Y: Ферзи

Известно, что на доске 8×8 можно расставить 8 ферзей так, чтобы они не били друг друга. Вам дана расстановка 8 ферзей на доске, определите, есть ли среди них пара бьющих друг друга.

Программа получает на вход восемь пар чисел, каждое число от 1 до 8 — координаты 8 ферзей. Если ферзи не бьют друг друга, выведите слово NO , иначе выведите YES .

Ввод Вывод

Z: Большой сдвиг

Дан массив из \(N\) (\(1 \le N \le 100000\)) целых чисел и число \(K\) (\(|K|

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *