Работа вам нужна срочно. Не волнуйтесь, уложимся!
- 22423 авторов готовы помочь тебе.
- 2402 онлайн
Составить программу, которая меняет местами наибольший и наименьший элемент одномерного массива. Запомнить номера элементов, которые меняли местами. С её помощью изменить всю матрицу. Написать функцию вывода матрицы, с её помощью вывести исходную, а потом измененную матрицу с номерами переставленных элементов справа от каждой строки.
#include "stdafx.h"
#include
#include
#include
#include
using namespace std;
const int m=4;
void str (int* A, int n, int& a, int& b)
{int M=0;
int m=100;
for (int i(0); i
if (M{
M=A[i];
a=i+1;
}
if (m>A[i])
{
m=A[i];
b=i+1;
}
}
int t;
t=A[a-1];
A[a-1]=A[b-1];
A[b-1]=t;
}
void matr (int B[][m], int n, int* a, int* b)
{
for (int i(0); i
str ( B[i], n, a[i], b[i]);
}
}
void vvv (int B[][m], int n, int* a, int* b)
{
for (int i(0); i
for (int j(0); j
cout «setw(4)«B[i][j];
}
cout«" "«a[i]«" "«b[i]«endl;
}
}
int _tmain(int argc, _TCHAR* argv[])
{ setlocale (LC_ALL, "Russian");
const int n=4;
int B[n][m]={{1, 5, 2, 4},
{3, 4, 1, 2},
{14, 15, 10, 11},
{5, 4, 9, 6}};
int a[n]={}, b[n]={};
cout «" исходная матрица"«endl;
vvv (B, n, a, b);
matr ( B, n, a, b);
cout «" полученная матрица"«endl;
vvv (B, n, a, b);
_getch ();
return 0;
}
Составить программу, позволяющую найти сумму элементов матрицы.
#include
#include
#include
#include
using namespace std;
#define n 3
const int m=3;
void simm (int mas[n][n], int i, int j);
void FunInputMatrix(int , int A[][m]);
void FunOutputMatrix(int , int A[][m]);
void Sum (int mas[n][n], int A[][m], int P[][m]);
int main()
{ int A[n][n]; int P[n][n];
FunInputMatrix(n, A);
cout<
cout<
simm (mas,i,j);
cout<
Sum (mas, A, P);
}
void simm (int mas[n][n], int i, int j)
{
srand( time( NULL ) );
cout<<"Part of matrix:"<
for(j=0; j
{
mas[i][j]=rand()%10;
cout<
else
cout<<" ";
cout<
for(i=1; i
cout<<"Symmetric matrix:"<
for(j=0; j
}
void FunInputMatrix(int , int A[][m])
{
for (int i=0;i
}
void FunOutputMatrix(int , int A[][m])
{
for (int i=0;i
cout<
}
void Sum (int mas[n][n], int A[][m], int P[][m])
{
int K;
for (int i=0;i
P[i][j]=K;}
for (int i=0;i
cout<
}
Сортировка строк целочисленной динамической матрицы по возрастанию максимальных элементов строк. Порядок чисел в каждой строке не меняется.
void Myprint (int **D,int *S,int ,int);
int main()
{
// 1) Объявление и создание динамической матрицы
int n, m; int **d; randomize();
n=random(5)+2; m=random(5)+2;
d=new int*[n];
for(int i=0;i
// 2) Получение элементов динамической матрицы случайным образом
for(int i=0;i
for(int j=0;j
d[i][j]=random(15)-6;
/* 3) Построение вектора максимальных элементов строк s. Его размерность соответствует количеству строк матрицы. */
int *s,Mymax,Mymin,nmin;
s=new int[n]; // Построение динамического одномерного массива
for(int i=0;i
{ Mymax=d[i][0];
for(int j=0;j
if (d[i][j]>Mymax) Mymax=d[i][j];
s[i]=Mymax;
}
// 4) Вывод не рассортированной матрицы и вектора
Myprint(d,s,n,m) ;
// 5)Сортировка
for(int start=0;start<=n-2;start++)
{
/* Начиная с элемента s[start], находим наименьший элемент Mymin и его номер nmin */
Mymin=s[start]; nmin=start;
for(int i=start;i
if(s[i]
{ Mymin=s[i]; nmin=i;
}
/* Переставляем адреса строк матрицы с номерами start и nmin. Элементы этих строк остаются на старых местах */
int *p; p=d[start]; d[start]=d[nmin]; d[nmin]=p;
/* Переставляем элементы одномерного массива с номерами start и nmin */
int t; t=s[start]; s[start]=s[nmin]; s[nmin]=t;
}
// 6) Вывод рассортированной матрицы и вектора
Myprint(d,s,n,m) ;
getch(); return 0;
}
/* Функция для вывода матрицы D и вектора максимальных элементов строк S. */
void Myprint (int **D, int *S, int N, int M)
{for(int i=0;i
{ printf("\n");
for(int j=0;j
printf("%5d",D[i][j]);
printf(" => %5d",S[i]);
}
printf("\n");
}
Создание динамической ”матрицы”. В первой строке ре-зервируем память для одного элемента, во второй строке – для двух и т. д. Другими словами, создаём в памяти нижний треугольник квадратной “мат-рицы” относительно главной диагонали.
int main()
{ int n1; cout<<"Size1=>";
cin>>n1; // Объявили и ввели только одну размерность
int **arr;
arr= new int*[n1];
for (int i=0;i
arr[i]=new int[i+1];
/* В i-й строке резервируем память для (i+1) элемента*/
float s;
for (int i=0; i
{ s=0;
// Внутренний цикл с помощью указателя и номера элемента
for (int *q=arr[i], j=0; q< arr[i]+i+1; q++, j++)
{ *q=(i+1)*(j+1);
s+=*q;
cout.width(6);
cout<< (*q);
}
/* или внутренний цикл с помощью индекса
for (int j=0;j
{ arr[i][j]=(i+1)*(j+1);
s+=arr[i][j];
cout.width(6);
cout<
} */
// В этой же строке экрана курсор переводим в позицию с номером (n1+1)*6
gotoxy((n1+1)*6, wherey());
cout<<"Average=> "<
}
//Удаляем динамическую матрицу так, как в предыдущем примере
for (int i=0;i
delete[]arr[i];
delete[]arr;
getch(); return 0;
}
Создание динамической “матрицы” с различным коли-чеством элементов в строках. В каждой строке резервируем память для коли-чества элементов, которое вводим с экрана.
int main()
{ int n1; cout<<"Size1=>"; cin>>n1; // Количество строк
int *arr_of_size;
/*Объявление динамического одномерного массива, в котором будут хра-ниться количество элементов в каждой строке. */
arr_of_size=new int[n1]; // Создание динамического одномерного массива
cout<<"Input the size of each row";
for (int i=0;i
// Объявление и создание динамической матрицы
int **arr;
arr= new int*[n1];
for (int i=0;i
arr[i]=new int[arr_of_size[i]];
/* Количество элементов каждой строки берём из одномерного динамическо-го массива*/
float s;
for (int i=0; i
{ s=0;
for (int j=0;j
{
arr[i][j]=(i+1)*(j+1);
cout.width(6);
cout<
}
gotoxy((arr_of_size[i]+1)*6, wherey());
if (arr_of_size[i]==0)
cout<<"No elements";
else
cout<<"Average=> "<
}
//Удаляем матрицу
for (int i=0;i
delete[]arr[i];
delete[]arr;
delete []arr_of_size; // Удаляем динамический одномерный массив
getch(); return 0;
}
Рассортировать строки динамической матрицы с одинаковым количе-ством элементов в каждой строке по i – му наименьшему элементу строки, где i – номер строки.
#include "stdafx.h"
#include
#include
#include
using namespace std;
class matrix
{
private:
int **M;
int n;
int m;
int k;
int *puz;
public:
matrix(){}
matrix(int size1, int size2)
{
n=size1;
m=size2;
M= new int*[n];
for(int i=0;i
for(int i=0;i
for(int j=0;j
M[i][j]=rand()%20+10;
}
}
}
void outM()
{
for(int i=0;i
for(int j=0;j
cout<
cout<
}
void st_outM()
{
for(int i=0;i
for(int j=0;j
cout<
if(i<=m-1)
{
cout<<"=> "<
}
else
cout<
}
void sort()
{
int t;
for(int i=0;i
for(int z=0;z
for(int j=0;j
if(M[i][j]>M[i][j+1])
{
t=M[i][j];
M[i][j]=M[i][j+1];
M[i][j+1]=t;
}
}
}
}
}
void sort2()
{ int* T=new int[m];
int* puz=new int[k];
int w;
for(int i=0;i
puz[i]=M[i][i];
}
cout<<"k="<
for(int z=0;z
for(int i=0;i
if(puz[i]>puz[i+1])
{
T=M[i];
M[i]=M[i+1];
M[i+1]=T;
w=puz[i];
puz[i]=puz[i+1];
puz[i+1]=w;
}
}
}
};
~matrix(){}
};
matrix A(5,4);
int _tmain(int argc, _TCHAR* argv[])
{
A.outM();
cout<<"Sortiruem elementy strok"<
A.st_outM();
A.sort2();
cout<
system("pause");
return 0;
}
Создать динамическую матрицу с разным количеством текущих оценок в строках. Рассортировать строки, в которых нет 1, 2, или 3, по их среднему значению. Строки, в которых есть плохие оценки, в сортировке не должны участвовать.
#include
#include
#include
#include
#include
#include
#include
#include
#pragma hdrstop
#pragma argsused
#include
#include
#include
#pragma hdrstop
#pragma argsused
using namespace std;
int const Nmax=20; /* Наибольшая размерность массива, которая использу-ется
в конструкторе для контроля передаваемой в класс размерности. */
class DinArr {
int **M,
k,
v,
sum,
n,
q0,
*q1,
*q5,//Количество строк
*s1;//массив длин строк
float q2,
*s2;//массив максимальных значений
public:
DinArr(int t, int *y)
{
n=t;
s1=y;
s2= new float[n];
M=new int *[n];
for (int i=0;i
M[i]=new int [s1[i]];
}
}
void MyDef()
{
for(int i=0; i
for(int j=0; j
cout<<"M["<cin>>M[i][j];
cout<
}
}
void MyOut()
{
for(int i=0; i
for(int j=0; j
cout<
cout<
}
void MyFun2()
{
for(int i=0; i
cout<
}
void MyFun3()//вычисление среднего балла в строках где нет оценок типа 1. 2. 3.
{
for(int i=0; i
s2[i]=0;
for(int j=0; j
if(M[i][j]<4)
{
s2[i]=0;
break;
}
else
{
s2[i]=s2[i]+M[i][j];
}
}
s2[i]=(s2[i]/s1[i]);
}
}
void MyFun4()//сортировка
{
for(int i=0; i
if(s2[i]!=0)
{
for(int j=i; j
if(s2[i]
q2=s2[i];
s2[i]=s2[j];
s2[j]=q2;
q0=s1[i];
s1[j]=s1[j];
s1[j]=q0;
q1=M[i];
q5=M[j];
M[j]= new int [s1[j]];
M[i]= new int [s1[i]];
M[j]=q1;
M[i]=q5;
}
}
}
}
}
~DinArr() // Дeструктор
{ cout<<"\nThe destructor deletes array\n" ;
getch();
delete []s1;
delete []s2;
delete []M;
} // The end of destructor
} ; // The end of class
int main()
{ /* Создаём объект и одновременно вызываем конструктор. Фактический параметр
для него (размерность массива) вводим */
unsigned MyN;
cout<<"size=";
cin>>MyN;
int c1[MyN];
for(int i=0; i
cout<<"c1["<cin>>c1[i];
cout<
for(int i=0; i
cout<
cout<
//Вызываем методы класса
ObjArr.MyDef();
ObjArr.MyOut();
cout<
ObjArr.MyFun2();
cout<<"novi poradok"<
ObjArr.MyFun2();
cout<
getch();
return 0;
}
Изменяя порядок следования строк, рассортировать матрицу по возрастанию первых элементов строк. Элементы каждой строки должны остаться без изменений в том же порядке, в котором были до сортировки. Использовать сортировку выбором.
#include
#include
#include
#include
using namespace std;
int i, j;
const int n1max=10, n2max=10;
class ClMatr
{ int a[n1max][n2max],b[n1max][n2max], n1, n2;
public:
ClMatr(int size1, int size2)
{ if (size1>0 && size1
if (size2>0 && size2
}
void MyInp();
void MyOut();
void sortmatric();
};
void ClMatr::MyInp()
{
for (int i=0; i
for (int j=0; j
cout<<"a["<cin>>*(a[i]+j);
} }};
void ClMatr::MyOut()
{
for (int i=0; i
cout<
void ClMatr::sortmatric(){
int count[10][10], key;
for (i=0; i
for(int v=0,z=0;v
key=i;
for (j=i+1; j
{
for(int l=0;l
}
for(int l=0;l
}
}
}
cout<<"Reasult: ";
for (i=0; i
cout<
};
int main(){
int n,m;
cout<<"eto sortirovka v matrice";
cout<<"\n vvedite razmernost"<<"\n stroki\n";cin>>n;
cout<<"\n stolbci\n";cin>>m;
ClMatr M(n,m);
M.MyInp();
M.MyOut();
M.sortmatric();
_getch();
}
Составить класс для работы с целочисленной матрицей, включив в него матрицу, конкретные текущие размерности и следующие методы: конструктор для ввода и проверки текущих размерностей матрицы; ввод матрицы; вывод матрицы; поиск наибольшего и наименьшего значений матрицы, но-мера одной строки, где находится максимальный и номера одной строки, где находится минимальный элементы всей матрицы; цветной вывод матрицы, в результате которого все элементы найденных в предыдущей функции строк при выводе выделяются другими цветами. В функции main ввести размерно-сти матрицы, создать объект и проверить составленные методы.
const n1max=10, n2max=10;
class ClMatr
{ int a[n1max][n2max], n1, n2;
public:
ClMatr(int size1=5, int size2=3)
{ if (size1>0 && size1
n1=size1; else n1=5;
if (size2>0 && size2
n2=size2; else n2=3;
}
void MyInp();
void MyOut();
void MaxMin(int *, int *, int *, int *);
void MyColorOut(unsigned, unsigned,unsigned, unsigned, unsigned);
};
void ClMatr::MyInp()
{ int x, y=1;
for (int i=0; i
{ y++; x=-14;
for (int j=0; j
{ x+=16; gotoxy(x,y);
cout<<"a["<
scanf("%d", a[i]+j);
}
}
};
void ClMatr::MyOut()
{ int x, y=wherey()+1; int *p1, *p2 ;
for (p1=a[0]; p1<=a[n1-1]; p1+=n2max, y++)
for (x=1, p2=p1; p2
{
gotoxy(x,y);
printf("%5d", *p2);
}
cout<
}
void ClMatr::MyColorOut(unsigned i1, unsigned i2,
unsigned col1, unsigned col2, unsigned col3)
{ int x,i=0, y=wherey()+1; int *p1, *p2 ;
for (p1=a[0]; p1<=a[n1-1]; p1+=n2max, y++, i++)
{ if (i==i1) textcolor( col1); else if (i==i2) textcolor(col2);
else textcolor(col3);
for (x=1, p2=p1; p2
{ gotoxy(x,y); cprintf("%5d", *p2);
}
}
cout<
}
void ClMatr::MaxMin(int *max, int *Nmax, int *min, int *Nmin)
{ *max=*min=a[0][0]; *Nmax=*Nmin=0;
for (int i=0;i
for (int j=0;j
{ int el=*(a[0]+n2max*i+j);
if (*max
{ *max=el; *Nmax=i;
}
else if (*min>el)
{ *min=el; *Nmin=i;
}
}
}
int main()
{ int n1, n2, Nmax, Nmin, max, min; clrscr();
cout<<"\nn1="; cin>>n1; cout<<" n2="; cin>>n2;
ClMatr ob(n1,n2); clrscr();
ob.MyInp(); cout<
ob.MaxMin(&max,&Nmax,&min,&Nmin);
textcolor(10);
cprintf("Max element=%d in %d row\r\n",max , Nmax+1 );
textcolor(11);
cprintf("Min element=%d in %d row\r\n",min , Nmin+1 );
if (Nmax!=Nmin)
ob.MyColorOut(Nmax, Nmin, 10,11, 15);
getch(); return 0;
}
Получить действительную матрицу В, каждый элемент bij которой равен сумме элементов исходной матрицы, расположенных в закрашенной области, определяемой индексами i, j, на рисунке
#include
using namespace std;
const int n = 2;
const int m = 2;
class Matrix {
public:
Matrix() {
}
Matrix(int mat[n][m]) {
for(int i=0;i
}
void input() {
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cout << "mat[" << i << "," << j <<"] = ";
cin >> mat[i][j];
}
}
}
void output() {
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cout << mat[i][j] << " ";
}
cout << endl;
}
}
void countB(Matrix **res)
{
int r[n][m];
for(int i=0;i
for(int j=0;j
sum(i,j,r[i][j]);
}
}
*res = new Matrix(r);
}
private:
void sum(int i, int j, int &res) {
res = 0;
for(int l=0;l<=i;l++)
for(int k=0;k<=j;k++)
res += mat[i][j];
}
int mat[n][m];
};
int main()
{
Matrix a;
a.input();
Matrix* b = NULL;
a.countB(&b);
b->output();
system("pause");
return 0;
}
Написать программу, выводящую на экран диагональ матрицы.
#include
#include
#include
#include
using namespace std;
const int m=3;
void FunInputMatrix(int n, int A[][m]);
void FunOutputMatrix(int n, int A[][m]);
int NUM (int a);
void NumberOfPrime (int n, int A[][m]);
void QuantityOfUnity (int n, int A[][m]);
bool isPrimeNumber(int number) {
bool flag = true;
for(int i = 2;i <= (int)sqrt((double)number);i++)
if(number % i == 0) {
flag = false;
break;
}
return flag;
}
int main()
{
const int n=m;
int A[n][n];
FunInputMatrix(n, A);
cout<
cout<
cout<<"Number of unity"<
getch();
}
void FunInputMatrix(int n, int A[][m])
{
for (int i=0;i
}
void FunOutputMatrix(int n, int A[][m])
{
for (int i=0;i
cout<
}
int NUM (int a)
{
int num, k1=0, k0=0;
while(a)
{
num=a%2;
if (num)
k1++;
else k0++; a/=2;
}
return k0;
}
void NumberOfPrime (int n, int A[][m])
{ int k=0;
for (int i=0; i
if(isPrimeNumber(A[i][ n-1-i]))
k=k++;
}
cout<
void QuantityOfUnity (int n, int A[][m])
{ int d=0;
for (int i=0; i
d=d++;
cout<
Написать программу меняющую минимальный и максимальный элемент матрицы местами.
#include
#include
#include
#include
using namespace std;
const int m=4;
void str (int* A, int n, int& a, int& b)
{int M=0;
int m=100;
for (int i(0); i
if (M{
M=A[i];
a=i+1;
}
if (m>A[i])
{
m=A[i];
b=i+1;
}
}
int t;
t=A[a-1];
A[a-1]=A[b-1];
A[b-1]=t;
}
void matr (int B[][m], int n, int* a, int* b)
{
for (int i(0); i
str ( B[i], n, a[i], b[i]);
}
}
void vvv (int B[][m], int n, int* a, int* b)
{
for (int i(0); i
for (int j(0); j
cout <
cout<<" "<}
}
int main()
{
const int n=4;
int B[n][m]={{1, 5, 2, 4},
{3, 4, 1, 2},
{14, 15, 10, 11},
{5, 4, 9, 6}};
int a[n]={}, b[n]={};
cout <<" original matrix"<
matr ( B, n, a, b);
cout <<" obtained matrix"<
getch ();
return 0;
}
Написать программу, которая находит все нули в матрице Aij. в результате выводит количество нулей и их номера.
#include
#include
#include
#include
using namespace std;
const int m=3;
void FunInputMatrix(int n, int A[][m]);
void FunOutputMatrix(int n, int A[][m]);
void FunTestZero1mass(int n, int A[]);
void FunTestZeroMatrix1(int n, int A[][m]);
void FunTestZeroMatrix2(int n, int A[][m]);
void FunTestZeroMatrix3(int n, int A[][m]);
int main()
{
const int n=3
;
int A[n][m];
FunInputMatrix(n, A);
cout<<"Default matrix";
FunOutputMatrix(n,A);
FunTestZeroMatrix3(n,A);
getch();
}
void FunInputMatrix(int n, int A[][m])
{
for (int i=0;i
}
void FunOutputMatrix(int n, int A[][m])
{
for (int i=0;i
cout<
}
void FunTestZero1mass(int n, int A[])
{
int Zer=0;
for(int i=0; i
if(A[i]==0)
Zer=1;
}
cout<<"Zerocols--"<
}
void FunTestZeroMatrix1(int n, int A[][m])
{
cout<
FunTestZero1mass(m,A[i]);
}
}
void FunTestZeroMatrix2(int n, int A[][m])
{
cout<
for (int i =0; i
if(A[i][j]==0)
Zer=1;
}
cout<<"Zerorows--"<
}
void FunTestZeroMatrix3(int n, int A[][m])
{
cout<
for (int i =0; i
{
if(A[i][j]<0)
{
Zer=A[i][j];
rows=i;
cols=j;
cout<<"Zerorows__ "<
}
}
if(Zer==0)
cout<<"No negativ"<
}
Сортировка строк целочисленной матрицы по возрастанию некоторого параметра строки (например, по возрастанию максимальных элементов строк). Порядок чисел в каждой строке не меняется.
const m=4;
int main()
{ const n=5; int matr[n][m];
int*u[n];
for(int i=0;i
{ for(int j=0;j
matr [i][j]=random(15)-6;
u[i]= matr [i];
}
int s[n],Mymax,Mymin,nmin;
for(int i=0;i
{ Mymax= matr [i][0];
for(int j=0;j
if (matr [i][j]>Mymax)
Mymax= matr [i][j];
s[i]=Mymax;
}
for(int i=0;i
{ cout<
for(int j=0;j
printf("%5d", matr [i][j]);
printf(" => %5d",s[i]);
}
cout<
for(int start=0;start<=n-2;start++)
{
Mymin=s[start]; nmin=start;
for(int i=start;i
if(s[i]
{ Mymin=s[i];
nmin=i;
}
cout<< Mymin<< " "<
int *p; p=u[start]; u[start]=u[nmin]; u[nmin]=p;
int t; t=s[start]; s[start]=s[nmin]; s[nmin]=t;
}
for(int i=0;i
{ cout<
for(int j=0;j
printf("%5d",u[i][j]);
printf(" => %5d",s[i]);
}
cout<
for(int i=0;i
{ cout<
for(int j=0;j
printf("%5d",matr[i][j]);
}
getch(); return 0;
}