![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 30.12.2011
Сообщений: 1
|
![]()
Задание:
Дана целочисленная квадратная матрица. 1. Необходимо поменять местами максимальный элемент главной диагонали и элемент, лежащий на пересечении главной и побочной диагоналей. 2. Характеристикой столбца целочисленной матрицы назовем сумму его отрицательных нечетных элементов. Упорядочить столбцы матрицы в соответствии с ростом их характеристик Вот то что получилось, #include <iostream> #include <conio.h> using namespace std; void main() { setlocale(LC_ALL, "Russian"); const int M=100, N=100; int a[N][N],n,i,j,temp,k=0,l=0,p=0,q=0,har[M],z; cout <<"Введите размер матрицы "; cin >>n; for(i=0;i<n;i++) { for(j=0;j<n;j++) { cout<<"Введите элемент "<<i+1<<" строки "<<j+1<<" столбца "; cin>>a[i][j]; } } cout<<"Введена матрица: "<<endl; for(i=0;i<n;i++){ for(j=0;j<n;j++){ cout<<a[i][j]<<" "<<'\t'; }cout<<endl; } //1 a[k][l]=a[0][0]; for(i=0;i<n;i++){ if (a[k][l]<a[i][i]) { k=i; l=i;} } cout<<"максимальный элемент = "<<a[k][l]; cout<<endl; p=((n-1)/2); q=((n-1)/2); cout<<"центр матрицы = "<<a[p][q]<<endl; temp=a[k][l]; a[k][l]=a[p][q]; a[p][q]=temp; cout<<"измененная матрица : "<<endl; for(i=0;i<n;i++){ for(j=0;j<n;j++){ cout<<a[i][j]<<" "<<'\t'; } cout<<endl; } //2 bool fl; for ( j=0;j<n;j++){ har[j]=0; for(i=0;i<n;i++) if ((a[i][j]<0)&&(!((a[i][j])%2==0))) har[j]=a[i][j]+har[j]; } do { fl=1; for(j=0;j<n;j++) if(har[j]>har[j+1]) {temp=har[j]; har[j]=har[j+1]; har[j+1]=temp; for(j=0;j<n-1;j++){ for (i=0;i<n;i++){ temp=a[i][j]; a[i][j]=a[i][j+1]; a[i][j+1]=temp; } } fl=0; }} while(!fl); cout <<"Готовая матрица:"<<endl; for (i=0; i<n; i++) { for (j=0; j<n; j++) cout<<a[i][j]<<" "<<'\t'; cout<<endl; } cout<<" Характеристики столбцов: "<<endl; for (j=0;j<n;j++) cout<<har[j+1]<<" "; cout<<'\n'; system("pause"); } Проблема: во втором задании столбцы сортируются неправильно |
![]() |
![]() |
![]() |
#2 | |
Пользователь
Регистрация: 02.01.2012
Сообщений: 25
|
![]()
Во-первых, код оформлен крайне нечитабельно.
Во-вторых, цикл do_while: Цитата:
В-третьих, внутри цикла вы пытаетесь сортировать характеристики и соответствующие столбцы. Но вы используете не полный алгоритм сортировки, а именно после первого прохода по элементам сортировка у вас оканчивается, пример характеристик до: Код:
Код:
И в заключении, косяк при выводе характеристик в самом низу. Почему har[j+1], вывод ведь начинаем с 0 индекса. В итоге, часть кода по второму заданию: Код:
Последний раз редактировалось CaHb4ec; 05.01.2012 в 01:07. |
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Не работает алгоритм создания двумерной матрицы | RANLOD | C# (си шарп) | 6 | 11.11.2011 23:37 |
диапозон значений элементов для каждой строки двумерной матрицы | gagarin614 | Visual C++ | 1 | 09.11.2011 12:37 |
вывод номеров столбцов матрицы и подсчитать количество этих столбцов | Vitalina69 | Помощь студентам | 2 | 15.02.2011 21:52 |
Преобразование двумерной матрицы в одномерную | shamrock | Помощь студентам | 7 | 18.06.2009 18:09 |
Удаление элементов из двумерной матрицы | Димитрон | Помощь студентам | 8 | 28.05.2009 22:38 |