Форум программистов, компьютерный форум CyberForum.ru

Не корректно работает программа (Упорядочить элементы матрицы) - C++

Восстановить пароль Регистрация
 
RedFox94
Сообщений: n/a
06.12.2012, 03:02     Не корректно работает программа (Упорядочить элементы матрицы) #1
Условие:
Дана матрица целых чисел N* M.Упорядочить элементы матрицы так чтобы четные элементы матрицы максимально плотно заняли верхнюю часть матрицы,а не четные нижнюю.

Код:
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
#include <iostream>
 #include <cmath>
 using namespace std;
 void sort( int **a, const int nstb, const int nstr); 
 int main(){
 cout <<"Vvedite razmer massiva\n";
 int nstr,nstb;
 cin >> nstr >> nstb;
 int **a = new int *[nstr];
 for (int i = 0; i < nstr; i++)
 a[i] = new int [nstb];
 cout <<"Vvedite elementi\n";
 for (int i = 0;i < nstr; i++)
 for (int j = 0; j < nstb; j++)
 cin >>a[i][j];
 sort (a,nstb,nstr); 
 for (int i = 0; i < nstr; i++){
 cout <<"\n";
 for (int j = 0; j < nstb; j++)
 cout << a[i][j] <<"\t";} 
 cin.get();
cin.get();
  return 0;
 }
 void sort ( int **a, const int nstb, const int nstr){
 int buf = 0;
 int kol = (nstr / 2);
 for (int j = 0; j < nstb; j++)
 for (int i = 0; i < kol + 1; i++){
 if ((a[i][j] % 2 !=0) && a[i + kol][j] % 2 == 0) {
 buf = a[i+kol][j];
 a[i+kol][j] = a[i][j];
 a[i][j] = buf;
 }
 }
 }
Проблема:При вводе размера матрицы 3х3 идеально работает,а есле ввести 4х4 не хочет работать.Скорей всего и за выхода за границы массива так как считает от 0 до 3;

Исправьте код или объясните где нужно исправить
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2012, 03:02     Не корректно работает программа (Упорядочить элементы матрицы)
Посмотрите здесь:

C++ Упорядочить элементы каждой строки матрицы
Программа то вылетает с ошибкой, то работает корректно C++
Не корректно работает программа,посмотрите C++
Матрицы: упорядочить элементы каждой четной строки C++
Упорядочить все элементы матрицы таким образом, чтобы при чтении матрицы по строкам ее элементы образовывали отсортированный по возрастанию массив C++
C++ Не корректно работает программа с класами
C++ Упорядочить элементы матрицы по побочной диагонали
C++ Чтение из файла - программа корректно работает лишь раз

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
no_wearines
 Аватар для no_wearines
52 / 48 / 2
Регистрация: 01.01.2012
Сообщений: 322
06.12.2012, 05:19     Не корректно работает программа (Упорядочить элементы матрицы) #2
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
#include <iostream>
#include <algorithm>
#include <vector>
#include <conio.h>
using namespace std;
 
bool f_1(int i_val_1)
{
return ((i_val_1 % 2) == 0);
}
 
void sort ( int **a, const int nstb, const int nstr)
{
vector<int> v_1(nstb * nstr);
int i_1, i_2, i_3;
 
for(i_1 = 0, i_3 = 0; i_1 < nstb; ++i_1)
for(i_2 = 0; i_2 < nstr; ++i_2)
v_1[i_3++] = a[i_1][i_2];
 
partition(v_1.begin(), v_1.end(), f_1);
 
for(i_1 = 0, i_3 = 0; i_1 < nstb; ++i_1)
for(i_2 = 0; i_2 < nstr; ++i_2)
a[i_1][i_2] = v_1[i_3++];
}
 
int main()
{
cout <<"Vvedite razmer massiva\n";
int nstr,nstb;
 cin >> nstr >> nstb;
 int **a = new int *[nstr];
 for (int i = 0; i < nstr; i++)
 a[i] = new int [nstb];
 cout <<"Vvedite elementi\n";
 for (int i = 0;i < nstr; i++)
 for (int j = 0; j < nstb; j++)
 cin >>a[i][j];
 sort (a,nstb,nstr);
 
 for (int i = 0;i < nstr; i++)
 {
 for (int j = 0; j < nstb; j++)
 cout<<a[i][j]<<" ";
 cout<<endl;
 }
 
 for(int i_1 = 0; i_1 < nstr; ++i_1) 
 delete [] a[i_1]; //Освобождение памяти, выделенной под массив 
 delete [] a; //освобождение памяьт, выделенной под массив
 
 getch();
 return 0;
}
Yandex
Объявления
06.12.2012, 05:19     Не корректно работает программа (Упорядочить элементы матрицы)
Ответ Создать тему

Метки
корректно, матрицы, программа, работает, Упорядочить, элементы
Опции темы

Текущее время: 12:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru