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

двумерный массив - C++

Восстановить пароль Регистрация
 
LAans
1 / 1 / 0
Регистрация: 29.04.2010
Сообщений: 46
30.10.2010, 21:06     двумерный массив #1
суть программы - поменять четные столбцы матрицы местами
2 с 4, 4 с 6 и тд

например задаю матрицу
5x5

результат
2 1 1 1 5545 2
3 1 0 1 15145 3
6 5 2 3 5445 2
5 2 1 3 1545 3
2 3 4 5 564 3

запущу еще раз программу, введу те же 5x5
выдает уже без тысячных чисел

как это исправить ?



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
# include <iostream.h>
# include <conio.h>
# include <stdlib.h>
 
int change (int, int, int [100][100]);
int i, j;
 
void main ()
{
clrscr();
int n, m;
int a[100][100];
 
cout <<"\nEnter n: ";
cin >> n;
cout <<"\nEnter m: ";
cin >> m;
 
for (i=0; i<m;i++)
 
    for (j=0;j<m;j++)
 
      a[i][j]=rand()%5+1;
 
for( i=0; i<n;i++)
  {
    for( j=0;j<m;j++)
     cout<<a[i][j]<<" ";
     cout<<endl;
   }
 
cout<<endl;
cout<<endl;
change (n, m, a);
 
getch();
}
 
 
int change (int n, int m, int a[100][100])
{
int r;
  for (i=0; i<n; i++)
   {
    for (j=0; j<m-1; j++)
    if (j%2!=0)
    {
    r=a[i][j];
    a[i][j]=a[i][j+2]; 
    a[i][j+2]=r;}
 
   }
   for (i=0; i<n; i++)
{   for (j=0; j<m; j++)
     cout << a[i][j] <<  " ";
     cout << endl;
}
   return 0;
}
Добавлено через 3 часа 42 минуты
неужели никто не знает ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.10.2010, 21:06     двумерный массив
Посмотрите здесь:

C++ Двумерный массив.
C++ двумерный массив
двумерный массив C++
двумерный массив на C++ C++
Двумерный массив C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
White Luna
 Аватар для White Luna
32 / 26 / 2
Регистрация: 08.09.2010
Сообщений: 402
30.10.2010, 21:16     двумерный массив #2
C++
1
 if (j%2!=0)
а что делает это строчка
LAans
1 / 1 / 0
Регистрация: 29.04.2010
Сообщений: 46
30.10.2010, 23:24  [ТС]     двумерный массив #3
Цитата Сообщение от White Luna Посмотреть сообщение
C++
1
 if (j%2!=0)
а что делает это строчка
проверяет на нечетность столбцы
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
31.10.2010, 00:29     двумерный массив #4
LAans, я не стал вашу исправлять. просто новую сделал

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
#include <iostream>
 
using namespace std;
 
const int ROW = 3;
const int COL = 5;
 
void swapcol(int arr[ROW][COL]){
    const int sh = 2;
    for (int j = 1; j < COL-2; j += 2)
        for (int i = 0; i < ROW; ++i)
            std::swap(arr[i][j],arr[i][j+sh]);
}
 
int main()
{
    int arr[ROW][COL] = {{1,2,3,4,5},
                         {6,7,8,9,3},
                         {4,5,6,7,8}};
 
    for (int i = 0; i < ROW; ++i){
        for (int j = 0; j < COL; ++j)
            cout<<arr[i][j]<<" ";
        cout<<endl;
    }
 
    cout << endl;
 
    swapcol(arr);
 
    for (int i = 0; i < ROW; ++i){
        for (int j = 0; j < COL; ++j){
            cout<<arr[i][j]<<" ";
        }
        cout<<endl;
    }
 
    return 0;
}
TheMachinist
 Аватар для TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
31.10.2010, 00:35     двумерный массив #5
LAans
На последнем проходе цикла имеет место попытка поменять местами a[i][j] с несуществующим a[i][j+2]
C++
1
2
3
4
5
6
7
8
9
10
for (i=0; i<n; i++)
   {
        for (j=0; j<m-1; j++)
        if (j%2!=0)
        {
        r=a[i][j];
        a[i][j]=a[i][j+2]; 
        a[i][j+2]=r;}
 
   }
Вместо j < m-1 нужно j < (m-2)
LAans
1 / 1 / 0
Регистрация: 29.04.2010
Сообщений: 46
31.10.2010, 01:11  [ТС]     двумерный массив #6
спасибо большое
Yandex
Объявления
31.10.2010, 01:11     двумерный массив
Ответ Создать тему
Опции темы

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