Написала программу, не знаю, правильно ли… Она должна в прямоугольной матрице упорядочить строки по возрастанию сумм их элементов методом прямого обмена. Например,
12341____________03-121
03-121___________56-302
823-10____=> ____12341
56-302___________823-10
Появляется предупреждение при компиляции программы!!
267:Use qualified name to access nested type ‘ios::seek_dir’
И ещё ошибка:
15:Statement missing
Что делать, как исправить???
#include <iostream.h>
#include <iomanip.h>
//прототипы функций
//функция, суммирющая элементы строк
void SummaStrok(int **a,int m,int n,int *v);
//функция, выполняющая вывод матрицы и суммы элементов в строках
void Vyvod(int **a,int m,int n,int *v);
//функция,выполняющая сортировку строк
void Sort(int **a,int m,int n,int *v);
int main() {
int m,n,i,j;
cout<<"Введите количество строк и столбцов матрицы: "
cin>>m>>n;
int **a=new int *[m]; //выделение памяти
for (i=0;i<m;i++) //под матрицу
a[i]=new int[n];
for (i=0;i<m,i++) //ввод матрицы
for (j=0;j<m,j++)
cin>>a[i][j];
int *v=new int[m]; //вспомогательный массив
SummaStrok(a,m,n,v); //суммирование элементов строк
Vyvod(a,m,n,v); //контрольная печать
Sort(a,m,n,v); //сортировка
Vyvod(a,m,n,v); //вывод результатов
return 0;
}
void SummaStrok(int **a,int m,int n,int *v) {
int i,j;
for (i=0;i<m;i++) {
v[i]=0;
for (j=0;j<n;j++)
v[i]+=a[i][j];
}
}
void Vyvod(int **a,int m,int n,int *v) {
int i,j;
for (i=0;i<m;i++) {
for (j=0;i<n;j++)
cout<<setw(4)<<a[i][j]<<" ";
cout<<endl;
}
}
//сортировка строк матрицы методом прямого обмена
void Sort(int **a,int m,int n,int *v) {
long buf_sum;
int buf_a,temp;
int i,j;
for (i=m-1;i;i--)
for (j=0;j<i;j++)
if (v[j]>v[j+1]){
buf_sum=v[i]; //обмен значений v
v[i]=v[i+1];
v[i+1]=buf_sum;
}
for (j=0;j<n;j++) { //перестановка строк матрицы a
buf_a=a[i][j];
a[i][j]=a[i+1][j];
a[i+1][j]=buf_a;
}
}