Пример 28.
Найти индекс и значение минимального элемента массива.
В задаче достаточно определить индекс искомого элемента массива, и с его помощью получить доступ к самому элементу.
Программа:
# define k 10 // количество элементов массива
void main ()
{ float a[k]; int i; im; // описание массива и переменных
clrscr(); // очистка экрана
puts (“Ввести %d элементов массива”; k);
for (i=0;i<k;i++) // цикл по индексам элементов
scanf (“%f”, ar+i); // ввод элемента
im=0; // индекс начального элемента
for (i=1; i<k; i++) // цикл поиска индекса минимума
if (a[i] < a[im]) im=i; // проверка элемента на минимум
printf (“Минимум = %5.2f индекс=%d”, a[im], im);
}
Пример 29.
Упорядочить по возрастанию элементы массива методом "пузырька". Название происходит оттого, что легкие элементы должны перемещаться ("всплывать") к одному из концов массива. Используется два цикла. Первый цикл (прямой) организует шаги сортировки на единицу меньше числа элементов. Второй (обратный) цикл от конца массива до начала неупорядоченного фрагмента массива. В нем сравниваются соседние элементы a[j] и a[j-1] и переставляются местами с использованием рабочей ячейки r, если нарушено условие сортировки.
|
|
Программа:
#define k 10 // размер массива
void main ()
{ float a[k], r; // описание массива и переменной
int i, j; // описание индексов
clrscr(); // очистка экрана
printf (“Ввод массива:\n”);
for (i=0; i < k; i++) scanf (“%f”, a+i); // цикл ввода элементов массива
for (i=0; i < k-1; i++) // цикл шагов упорядочения
{ for(j=k-1; j > i; j--) // цикл перестановок элементов
if (a[j-1] > a[j]) // если условие сортировки нарушено,
{ r=a[j]; // перестановка
a[j]=a[j-1]; // соседних
a[j-1]=r; // элементов
} // конец цикла перестановок
} // конец цикла упорядочения
puts (“Массив упорядочен по возрастанию:”);
for (i=0; i<k; i++) printf (“%5.2f ”, a[i]); // цикл вывода массива
}