![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
1. Есть ли ошибки? Если есть, указать, в каких строках. Если нет, записать, что будет выведено.
const size2=6;
void Sort1(int X[],int m)
{ int min,Nmin;
for(int k=0;k<m-1;k++) { min=X[k]; Nmin=k;
for (int j=k;j<m;j++)
if(X[j]<min) {min=X[j]; Nmin=j; }
X[Nmin]=X[k]; X[k]=min; }
}
void Sortmatr2(int M[][size2],int n,int m)
{ for(int i=0;i<n;i+=2) Sort1(&M[i][0],m*2); }
void MyOut(int M[][size2],int n,int m)
{ for(int i=0;i<n;i++) { cout<<endl;
for(int j=0;j<m;j++)
printf("%4d ",M[i][j]);
} cout<<endl;
}
int main() { const n=4,m=6;
int A[n][size2]={{4, 3, -2}, {1, 11, -12, 13, 14},
{20, -21, 22, -23}, {30, 4, 3, 2,1} };
Sortmatr2(A,n,m); MyOut (A,n,m);
getch(); return 0;
}
2. Есть ли ошибки? Если есть, указать, в каких строках. Если нет, записать, что будет выведено.
const size2=6;
int Sum1(int *X, int m)
{ int S=0; for(int j=0; j<m; j++) S+=X[j];
return S; }
void SumM1 (int M[][size2],int n,int m, int *S1)
{ for(int i=0;i<n;i++) S1[i]=Sum1 (&M[i][m/2],m/2); }
void SumM2 (int M[][size2],int n,int m, int *S2)
{ for(int i=0;i<n;i++) S2[i]= Sum1(&M[i][1],m-1); }
void MyOut(int *s, int n)
{ cout<<endl; for(int i=0;i<n;i++) cout<< s[i]<<" "; }
int main()
{ const n=4,m=6; int A[n][size2]={{4, 3, -2}, {1, 11, -12, 13, 14},
{20, -21, 22, -23}, {30, 4, 3, 2,1} },
S1[n], S2[n];
SumM1 (A,n,m,S1); MyOut (S1,n);
SumM2 (A,n,m,S2); MyOut (S2,n);
getch(); return 0; }
3. Пусть описана функция:
int MyMax (int *x, int n)
{ int Max=x[0];
for int i=0; i<n; i++) if (x[i]>Max) Max=x[i];
return Max; }
3.a. Как её использовать для вывода наибольшего элемента каждой строки матрицы: const n=4, m=6; int A[n][m];? Выбери правильные варианты ответов:
1) cout<<MyMax (A[0], n*m);
2) for (int i=0; i<n; i++) cout<< MyMax (A[i], m)<< “ “;
3) for (int i=0; i<n; i++) printf(“%5d”, MyMax (A[i], m);
4) int Res=MyMax(&A[0][0], n*m); cout<<Res;
5) for (int j=0; j<m; j++) cout<< MyMax (A[j], n)<< “ “;
3.b. Как использовать ту же функцию MyMax для вывода наибольшего элемента всей матрицы const n=4,m=6; int A[n][m];?
Выбери правильные варианты ответов:
1) MyMax (A[0], n*m);
2) cout<< MyMax (&A[0], n*m);
3) cout<< MyMax (A[0][0], n*m);
4) int R=MyMax(&A[0][0], n*m); cout<<R;
5) int R=MyMax(&A[0][0], n); cout<<R;
6) int R; R=MyMax(A[0], m); cout<<R;
7) int R; R=MyMax(A[0], m*n); cout<<R;
8) cout<< MyMax(&A[0][0], n*m);
4. Пусть описана следующая функция:
void MyMax (int *x, int n, int &Max)
{ Max=x[0]; for (int j=1; j<n; j++)
if (x[j]>Max) Max=x[j]; }
Как её использовать для вывода наибольшего элемента всей матрицы
const n=4, m=6; int A[n][m];?
Выбери правильные варианты ответов:
1) int R=MyMax(&A[0][0], n*m); cout<<R;
2) int R; MyMax(&A[0], m*n, R); cout<<R;
3 ) int R; MyMax(A[0], n*m, R); cout<<R;
4) int R; cout<< MyMax(&A[0][0], n*m, R);
5) int R; MyMax(&A[0][0], m*n, R); cout<<R;
Задачи
1. Составить следующие функции для работы с матрицей: ввод матрицы; вывод; транспонирование матрицы с сохранением результата на новом месте; умножение исходной матрицы на транспонированную; головную функцию для проверки этих функций:
const int n2=3; void INP1(double x[][n2], int);
void OUT1(double x[][n2], int);
void TRANS(double x[][n2], double y[][n2], int);
void MULT (double x[][n2], double y[][n2], double z[][n2], int);
int main() { const size=3; int k;
double a[size][n2], b[size][n2], c[size][n2];
INP1(a,size); cout<<"\nOld matrix\n"; OUT1(a,size);
TRANS(a,b,size); cout<<"\nTrans matrix \n"; OUT1(b,size);
MULT(a,b,c,size); cout<<"\nMultiplication \n"; OUT1(c,size);
getch(); return 0; }
void TRANS(double x[][n2], double y[][n2], int n)
{ for(int i=0; i<n; i++)
for(int j=0; j<n2; j++) y[i][j]=x[j][i]; }
void MULT (double x[][n2], double y[][n2], double z[][n2], int n)
{ int l, i, j, s;
for (i=0; i<n; i++)
for (j=0; j<n2; j++) { s=0;
for (l=0; l<n2; l++) s+=x[i][l]*y[l][j];
z[i][j]=s; }
}
void OUT1(double x[][n2], int n)
{ int X,j,Y=wherey();
for (int i=0; i<n; i++, Y++)
for (X=1, j=0; j<n2; j++, X+=7) { gotoxy(X,Y); cout<<x[i][j]; }
cout<<endl; }
void INP1(double x[][n2],int n)
{ int Y=1, X; for (int i=0; i<n; i++)
{ Y++; X=-14;
for (int j=0; j<n2; j++)
{ X+=16; gotoxy(X,Y);
cout<<"a["<<i<<","<<j<<"]"<<" "; cin>>x[i][j]; }
}
}
2. Составить класс для работы с целочисленной матрицей, включив в него матрицу, конкретные текущие размерности, конструктор для ввода и проверки текущих размерностей и следующие методы: ввод матрицы; вывод матрицы; поиск наибольшего и наименьшего значений матрицы и номеров строк, где они находятся; перестановку двух строк матрицы. В функции main ввести размерности матрицы, создать объект и проверить составленные методы:
const n1max=10, n2max=5;
class ClMatr
{ int a[n1max][n2max], n1, n2;
public:
ClMatr(int size1=5, int size2=3)
{ if (size1>0 && size1<n1max) n1=size1; else n1=5;
if (size2>0 && size2<n2max) n2=size2; else n2=3; }
void MyInp(); void MyOut();
void MaxMin(int &, int &, int &, int &);
void Change(int, int);
}; // End of class
void ClMatr::MyInp()
{ int x, y=3;
for (int i=0; i<n1; i++)
{ y++; x=-14;
for (int j=0; j<n2; j++) { x+=16; gotoxy(x,y);
cout<<"a["<<i<<","<<j<<"]"<<" ";
cin>>a[i][j]; }
} };
void ClMatr::MyOut()
{ int x, y=wherey()+1, j;
for (int i=0; i<n1; i++, y++)
for (x=1, j=0; j<n2; j++, x+=7)
{ gotoxy(x,y);
cout<<a[i][j]; } cout<<endl;
}
void ClMatr::MaxMin (int &max, int &Nmax, int &min, int &Nmin)
{ max=min=a[0][0];
Nmax=Nmin=0;
for (int i=0;i<n1;i++)
for (int j=0;j<n2;j++)
if (max<a[i][j]) { max=a[i][j]; Nmax=i; }
else if (min>a[i][j]) { min=a[i][j]; Nmin=i; }
}
void ClMatr::Change(int k1, int k2)
{ if (k1!=k2)
for (int j=0; j<n2; j++) { int d=a[k1][j]; a[k1][j]=a[k2][j];
a[k2][j]=d; }
}
int main() { int n1, n2, Nmax, Nmin, max, min;
cout<<"\nn1="; cin>>n1; cout<<" n2="; cin>>n2;
ClMatr ob(n1,n2); ob.MyInp();
cout<<"\nOld matrix\n"; ob.MyOut();
ob.MaxMin(max,Nmax,min,Nmin);
cout<<"Max element= "<<max <<" in "<< Nmax << " row\n";
cout<<"Min element= "<<min <<" in "<< Nmin << " row\n";
if (Nmax!=Nmin) { ob.Change(Nmax,Nmin);
cout<<"Matrix after changing "; ob.MyOut(); }
else cout<<"Matrix is not changed \n";
getch(); return 0;
}
Требования к задачам.
1) Матрица имеет фиксированную размерность в виде констант.
2) В задачах 1— 9 уровня B и 1, 2, 5 уровня С разработать функцию для работы с одномерным массивом и использовать её для каждой строки матрицы.
3) Разработать несколько функций для работы со всей матрицей.
4) Разработать два варианта проекта: 1) разбить весь проект на самостоятельные функции; 2) функции включить в класс и с помощью конструктора создать и использовать объект.
Дата публикования: 2015-02-18; Прочитано: 214 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!