Поменять местами максимальный и последний отрицательный элементы массива А (40) - C (СИ)
Формулировка задачи:
1. Поменять местами максимальный и последний отрицательный элементы массива А (40).
Решение задачи: «Поменять местами максимальный и последний отрицательный элементы массива А (40)»
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("\nbefore");
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("\nafter:");
print_array(A, N);
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 генерируем случайные значения для массива, выводим его на экран
- Меняем местами максимальный и последний отрицательный элементы массива
- Выводим измененный массив на экран
- Возвращаем 0, чтобы указать, что программа успешно завершилась