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

//Программа находит строку введенного с клавиатуры двумерного массива целых

//чисел, содержащую максимальную сумму элементов

#include <stdio.h>

#include <conio.h>

#include<stdlib.h>

#include<string.h>

const RAZ = 10; //размер одного измерения массива

void inputmatr(int matr[][RAZ],int &m, int &n);

void okno(int x1,int y1,int x2,int y2,int bkcol,int colb,char zag[15]);

int exist(int matr[][RAZ],int n,int x,int p,int k);

void poisk_st(int m,int n,int matr[][RAZ],int &max,int &jmax);

void outmatr(int m,int n,int matr[][RAZ],int imax);

void main()

{int a[RAZ][RAZ]; //массив

int imax; //номер строки с максимальной суммой элементов

int max; //максимальная сумма элементов

int m; //число строк

int n; //число столбцов

okno(1,1,80,25,BLACK,WHITE,"");

okno(15,1,60,4,WHITE,BLUE,"Описание");

cprintf("\r\n В матрице целых чисел найти номер строки,");

cprintf("\n\r содержащей максимальную сумму элементов");

okno(10,10,65,25,RED,WHITE,"Результат");

okno(15,6,60,8,WHITE,BLUE,"Окно ввода");

//ввод исходных данных

inputmatr(a,m,n);

//поиск строки с максимальной суммой элементов

poisk_st(m,n,a,max,imax);

//вывод матрицы

okno(10,10,65,25,RED,WHITE,"Результат");

cprintf("\n\r Максимальная сумма элементов строки (%i) содержится",max);

cprintf("\n\r в %i-ой строке исходного массива\n\r", imax + 1);

outmatr(m,n,a,imax);

cprintf("\n\r Для завершения нажмите <Enter>");

getchar();

getchar();

}

//ввод исходных данных

void inputmatr(int matr[][RAZ], int &str, int &sto)

{int i, j;

cprintf("\n\r Введите число строк в массиве <%i: ",RAZ);

scanf("%i", &str);

cprintf("\r Введите число столбцов в массиве <%i: ",RAZ);

scanf("%i", &sto);

randomize();

for(i = 0; i < str; i++) //перебор строк

for(j = 0; j < sto; j++) //перебор столбцов

do{matr[i][j] = random(100);

}

while (exist(matr,sto,matr[i][j],i,j));

}

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",zag);

}

int exist(int matr[][RAZ],int n,int x,int p,int k)

{int i,j;

for(i = 0; i <= p; i++)

for(j = 0; j < n; j++)

{if((i == p) && (j == k))

return 0;

if(matr[i][j] == x)

return 1;

}

return 0;

}

void poisk_st(int str,int sto,int matr[][RAZ],int &max,int &imax)

{int i, j, pr;

imax = 0; //за максимум принимаем сумму элементов первой строки

max = 0;

for(j = 0; j < sto; j++)

max += matr[0][j];

for(i = 1; i < str; i++)

{pr = 0;

for(j = 0; j < sto; j++)

pr += matr[i][j];

if(max < pr)

{imax = i;

max = pr;

}

}

}

void outmatr(int m,int n,int matr[][RAZ],int imax)

{int i, j;

for(i = 0; i < m; i++)

{for(j = 0; j < n; j++)

if(i == imax)

{textbackground(WHITE);

textcolor(BLUE);

cprintf("%4i",matr [i][j]);

textcolor(WHITE);

textbackground(RED);

}

else cprintf("%4i",matr[i][j]);

cprintf("\n\r");

}

}


Лабораторная работа №7


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



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