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

Ошибки в массиве. - C++

Восстановить пароль Регистрация
 
fokino
0 / 0 / 0
Регистрация: 27.12.2011
Сообщений: 15
02.02.2012, 18:13     Ошибки в массиве. #1
Задан двумерный массив N x N. Разрешается произвольно переставлять элементы внутри любого столбца. Проверить, можно выполнив конечное количество перестановок в столбцах, расположить на побочной диагонали элементы так, чтобы он росли.
Ошибки:
По диагонали не сортирует , массив всегда один и тотже .Помогите пожалуйста.

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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include <iostream.h>
#include <windows.h>
 
int main()
{
 
const int size=6;
 
char RUS[80];
 
CharToOem("Размер массива: ", RUS);
                  
cout << RUS;
int array[size][size];
 
for( int i = 0; i < size; i++)
{
        for(int j = 0; j < size; j++)
        {
                           
                           array[i][j] = rand() % 20;
        }
        
 
}
 
//СОРТИРОВКА ВНУТРИ СТОЛБЦА
 
for(int stolb = 0; stolb < size; stolb++)
{
        for(int a = 1; a < size; a++){
        
        for(int b = size -1; b >= a; b--){
                
                if(array[b-1][stolb] > array[b][stolb]){
                              
                              int t = array[b][stolb];
                              array[b][stolb] = array[b-1][stolb];
                              array[b-1][stolb] = t;
                              
                }
        }
        
}
        
}
 
CharToOem("Отсортированый массив:\n", RUS); cout << RUS;
 
for(int i = 0; i < size; i++)
{
        for(int j = 0; j < size; j++)
        {
                           
                           
                           cout << array[i][j] << "\t";
        }
        cout << endl;
 
}
 
int r = 1;
 
for(int i = 0; i < size; i++)
{
        if(array[i][i] > array[i+1][i+1]) r = 0;
        
}  
 
switch(r){
          case 0:
               CharToOem("\nВ данном массиве числа по диагонале не в порядке возростания.\n", RUS);
               cout << RUS;
               break;
          case 1:
               CharToOem("\nВ данном массиве числа по диагонале в порядке возростания.\n", RUS);
               cout << RUS;
               break;
          default:
                  break;
}
                         
system("pause");
 
return 0;    
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.02.2012, 18:13     Ошибки в массиве.
Посмотрите здесь:

C++ Не могу найти ошибку с подсчетом суммы элементов в интервале[a,b] в динамическом одномерном массиве массиве.
наименьшее значение в массиве поменять с последним элементом в массиве C++
C++ Найти в массиве максимальный и минимальный элементы в массиве и их количество
C++ Из массива А удалить те элементы, встречающиеся и в массиве А и в массиве В хотя бы два раза
C++ Ошибки в массиве
Вывести элементы, которые есть в массиве А в нескольких экземплярах и отсутствуют в массиве В C++
C++ В двухмерном массиве найти максимальный и минимальный элементы и их координаты в массиве
Проверить, есть ли в массиве А [n] числа В и С и определить, какое из чисел встречается в массиве чаще C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
02.02.2012, 23:42     Ошибки в массиве. #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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include <iostream.h>
#include <windows.h>
 
 
int main()
{
 
const int size=6;
 
char RUS[80];
 
/CharToOem("Размер массива: ", RUS);
                  
cout << RUS;
int array[size][size];
 
for( int i = 0; i < size; i++)
{
        for(int j = 0; j < size; j++)
        {
                           
                           array[i][j] = rand() % 20;
        }
        
 
}
int r = 1; 
//СОРТИРОВКА ВНУТРИ СТОЛБЦА
int tmp, i_min=0;
for(int i=1; i<size; i++)
    if(array[i][size-1]<array[i_min][size-1])
        i_min=i;
tmp=array[0][size-1]; array[0][size-1]=array[i_min][size-1]; array[i_min][size-1]=tmp;
for(int j=size-2; j>=0; j--)
{
    i_min=-1;
    for(int i=0; i<size; i++)
        if(array[i][j]>array[size-j-2][j+1])
        {
            if(i_min==-1)
                i_min=i;
            else
            {
                if(array[i][j]<array[i_min][j])
                    i_min=i;
            }
        }
    if(i_min==-1)
    {
        r=0; break;
    }
    tmp=array[i_min][j]; array[i_min][j]=array[size-j-1][j]; array[size-j-1][j]=tmp;
}
 
 
switch(r){
          case 0:
               CharToOem("\nВ данном массиве числа по диагонале не в порядке возростания.\n", RUS);
               cout << RUS;
               break;
          case 1:
               CharToOem("\nВ данном массиве числа по диагонале в порядке возростания.\n", RUS);
               cout << RUS;
               CharToOem("Отсортированый массив:\n", RUS); cout << RUS;
               cout<<endl;
               for(int i = 0; i < size; i++)
               {
                   for(int j = 0; j < size; j++)
                   {
                       cout << array[i][j] << "\t";
                   }
                   cout << endl;
               }
               break;
          default:
                  break;
}
                         
system("pause");
 
return 0;    
 
}
Yandex
Объявления
02.02.2012, 23:42     Ошибки в массиве.
Ответ Создать тему
Опции темы

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