Пример программы на обработку одномерного массива
//Найти и вывести номер элемента введенного с клавиатуры массива целых чисел,
//для которого сумма разностей с соседними элементами максимальна.
//Для крайних элементов использовать циклическое замыкание.
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<math.h>
const int RAZ = 10; //размер массива
int nomer(int a[], int &max);
void inputmas(int a[]);
void okno(int x1,int y1,int x2,int y2,int bkcol,int colb,char zag[15]);
void main()
{int a[RAZ]; //массив
int nom; //номер искомого элемента
int max; //значение максимальной разности
okno(1,1,80,25,BLACK,WHITE,"");
okno(15,1,65,5,WHITE,BLUE,"Описание");
cprintf("\r\n В массиве целых чисел найти номер");
cprintf("\n\r элемента, для которого сумма разностей");
cprintf("\n\r с соседними элементами максимальна");
okno(15,15,65,20,RED,WHITE,"Результат поиска");
okno(15,7,65,13,WHITE,BLUE,"Окно ввода");
//Ввод исходных данных
inputmas(a);
//Поиск номера элемента
nom = nomer(a, max);
okno(15,15,65,20,RED,WHITE,"Результат поиска");
cprintf("\n\r Искомый номер элемента массива: %i", nom);
cprintf("\n\r Значение элемента: %i, сумма разностей= %i", a[nom], max);
cprintf("\n\r Для завершения нажмите <Enter>");
getch();
}
int nomer(int a[], int &max)
{int pr; //текущее значение разности
int imax = 0; //за максимум принимаем первый по счету элемент
max = abs(a[RAZ - 1] - a[0]) + abs(a[1] - a[0]);
for(int i = 1; i < RAZ - 1; i++)
if(max < (pr = abs(a[i-1] - a[i]) + abs(a[i+1] - a[i])))
{imax = i;
max = pr;
}
if(max < abs(a[0] - a[RAZ - 1]) + abs(a[RAZ - 2] - a[RAZ-1]))
imax = RAZ - 1;
return imax;
}
void okno(int x1,int y1,int x2,int y2,int bkcol,int colb,char zag[15])
{window(x1,y1,x2,y2);
textbackground(bkcol);
textcolor(colb);
clrscr();
gotoxy((x2 - x1 - strlen(zag)) / 2,1);
cprintf("%s\n\r",zag);
}
void inputmas(int a[])
{cprintf(" Введите в одной строке элементы массива,\n\r");
cprintf(" состоящего из %i целых чисел, и нажмите <Enter>\n\r", RAZ);
cprintf(" ->");
for(int i = 0; i < RAZ; i++)
scanf("%i", &a[i]);
}