Поменять местами первый и минимальный элементы массива - C (СИ) (71462)
Формулировка задачи:
Заданный массив. Поменять местами его первый и минимальный элементы. Если элементов с минимальным значением несколько, взять последний из них Сделать в Си. Заранее спасибо
Решение задачи: «Поменять местами первый и минимальный элементы массива»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 40
int max_elem_idx(int *arr, int sz);
void input_array(int *A, int A_size);
void print_array(int *A, int A_size);
int main()
{
int i;
int A[N];
srand(time(0));
input_array(A, N);
puts("\nDo:");
print_array(A, N);
for (i = N - 1; i != 0; --i)
if (A[i]<0){
int tmp = A[i];
A[i] = A[max_elem_idx(A, N)];
A[max_elem_idx(A, N)] = tmp;
break;
}
puts("\nPosle:");
print_array(A, N);
getchar();
return 0;
}
int max_elem_idx(int *arr, int sz)
{
int i = 0;
int idx = i;
for (i = 1; i<sz; ++i){
if (arr[idx]<arr[i])
idx = i;
}
return idx;
}
void input_array(int *A, int A_size)
{
int i;
int a = -100;
int b = 100;
for (i = 0; i<A_size; i++)
{
A[i] = a + rand() % (b - a + 1); //генерируем массив
}
}
void print_array(int *A, int A_size)
{
for (int i = 0; i<A_size; i++)
{
printf("%4d", A[i]);
//printf("\n");
}
puts("");
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с I/O и работой со случайными числами
- Определяем размер массива N
- Объявляем функцию max_elem_idx, которая находит индекс максимального элемента в массиве
- Объявляем функцию input_array, которая считывает массив из стандартного ввода
- Объявляем функцию print_array, которая выводит массив на стандартный вывод
- В функции main создаем массив A заданного размера и инициализируем его случайными числами с помощью функции input_array
- Выводим массив на экран с помощью функции print_array
- В цикле проходим по массиву и меняем местами минимальный элемент и элемент с максимальным индексом
- Выводим измененный массив на экран с помощью функции print_array
- В функции main возвращаем 0, чтобы указать, что программа успешно завершилась