Пример программы на обработку одномерного массива

//Найти и вывести номер элемента введенного с клавиатуры массива целых чисел,

//для которого сумма разностей с соседними элементами максимальна.

//Для крайних элементов использовать циклическое замыкание.

#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]);

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: