06.12.2010, 22:57. Просмотров 15389. Ответов 17
Здравствуйте!
Помогите пожалуюста разобраться в данном задании
"Дана матрица NxM.Упорядочить её строки по возростанию их максимальных элементов"
вот мой код, но программа не работает, можете показать где у меня допущена ошибка и обьяснить работу 3-ей части программы, т.е "Построение строк матрицы по возрастанию их максимальных членов". Заранее большое спасибо.
C++ |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
| #include <iostream.h>
#include <iomanip.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int *b;
int i,j,n,m,k,g,t;
//--- Ввод двумерного динамического массива NxM
cout <<"Vvedite kolichestvo strok (N): ";
cin >> n;
cout <<"Vvedite kolichestvo stolbcov (M): ";
cin >> m;
//--- Выделение памяти
int **massiv = new int*[n];
for(k= 0; k < n; k++)
massiv[k] = new int[m];
//--- Тут massiv[i][j]
for(i = 0; i < n; i++)
for(j = 0; j < m; j++)
{
cout <<"s["<<i<<"]["<<j<<"]:";
cin >> massiv[i][j];
}
// --- Построение строк матрицы по возрастанию их максимальных членов
for (i=0;i<n;i++)
{
b[i]=massiv[i][0];
for (j=1;j<m;j++)
if (massiv[i][j]>b[i]) b[i]=massiv[i][j];
}
for (i=0;i<n-1;i++)
for (j=i+1;j<n;j++)
if (b[i]>b[j])
{
t=b[i];
b[i]=b[j];
b[j]=t;
for (g=0;g<m;g++)
{
t=massiv[i][g];
massiv[i][g]=massiv[j][g];
massiv[j][g]=t;
}
}
// --- Вывод двумерного массива NxM
for (i=0;i<n;i++)
{
for (j=0;j<m;j++)
cout <<setiosflags(ios::fixed)<<setw(10) <<setprecision(3)<<
massiv[i][j]<<
" ";
cout<<endl;
}
//--- Освобождение выделенной памяти
for (int s = 0; s <n; s++)
delete[]massiv[s];
delete[]massiv;
return 0;
} |
|
Добавлено через 21 час 46 минут
Вот немного подкоректировал код, но при подсчете программа выбивает ошибку
C++ |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
| #include <iostream.h>
#include <iomanip.h>
int main()
{
int n,m,i,j,k;
double t;
// Ввод размерности массива
cout << "Vvedite razmer n m" << endl;
cin >> n >> m;
// Выделение памяти под массив
double **umas2;
umas2=new double*[n];
for(i=0; i<n; i++)
umas2[i]=new double[m];
// Тут ввод массива
for (i=0; i<n; i++)
for (j=0; j<m; j++)
{
cout << "Vvedite umas2[" << i << "][" << j << "]: " ;
cin >> umas2[i][j];
}
// Выделение памяти под массив b
double *b;
b=new double[n];
// Действия
for (i=0; i<n; i++)
{
b[i]=umas2[i][0];
for (j=1;j<m;j++)
if (umas2[i][j]>b[i]) b[i]=umas2[i][j];
}
for (i=0;i<n-1;i++)
for (j=i+1;j<n;j++)
if (b[i]>b[j])
{
t=b[i];
b[i]=b[j];
b[j]=t;
for (k=0;k<m;k++)
{
t=umas2[i][k];
umas2[i][k]=umas2[j][k];
umas2[j][k]=t;
}
}
// Вывод на экран
for (i=0; i<n; i++)
{
for (j=0; j<m; j++)
cout << setw (9) << umas2[i][k] << " ";
cout << endl;
}
// Очистка выделенной под umas2 памяти
for(i=0; i<n; i++)
delete []umas2[i];
delete []umas2;
umas2=NULL;
// Очистка выделенной под b памяти
delete []b;
b=NULL;
return 0;
} |
|
Добавлено через 1 час 52 минуты
up
нет ни малейшей идеи
|
Комментарий модератора |
 |
Используйте теги форматирования кода. |
|