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

сдвиг строк с заданым шагом в матрице - C++

Восстановить пароль Регистрация
 
Jleloush
 Аватар для Jleloush
1 / 1 / 1
Регистрация: 16.01.2010
Сообщений: 26
28.07.2010, 01:27     сдвиг строк с заданым шагом в матрице #1
нужно сдвинуть строки вниз в квадратной матрице с заданным шагом.


Пример: 1 2 3 4 5 6
4 5 6 7 8 9
7 8 9 шаг 2 1 2 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
#include <iostream>
#include <cstdlib>
#include <conio.h>
 
using namespace std;
 
 
 
int main ()
{
    int n;
    int i,j, k;
    int a[100][100],b[100][100];
    cout << "Bvedu n ";
    cin>> n;
    cout << "Bvedu k ";
    cin >> k;
    
    for (i=0;i<n;i++)
        for(j=0;j<n;j++)
        {
        cout<<"Bvedu maccuB  a["<<i<<"]["<<j<<"]=";
            cin>>a[i][j];
        
    }
 for (i=0;i<n;i++)
        for(j=0;j<n;j++)
            if ( i+k>n)
            {
                b[(i+k)%n][j]=a[i][j];
            }
            
            else
            {
        
                b[i+k][j]=a[i][j];
            }
            
     for (i=0;i<n;i++)
        for(j=0;j<n;j++)
        
 
            cout <<b[i][j]<<endl;
        
 
    
    
    _getch();
    
 
     return 0;
 
 
}
 Комментарий модератора 
Используйте теги форматирования кода!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.07.2010, 01:27     сдвиг строк с заданым шагом в матрице
Посмотрите здесь:

Найти суму n членов арифметической прогресии с заданым начальным членом и шагом C++
C++ Циклический сдвиг в матрице в влево
Вывести члены арифметической прогрессии, которые не превышают 100, с заданым начальным членом и шагом C++
Вывести члены арифметической прогрессии, которые не превышают 100, с заданым начальным членом и шагом (через while) C++
C++ Подскажите как сделать, например "для продолжения нажмите клавишу х" и дальше выводится результат с шагом заданым пользователем
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Aye Aye
 Аватар для Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
28.07.2010, 02:05     сдвиг строк с заданым шагом в матрице #2
что то задание не понять, пример запутывает.
было:
Код
1   2  3  4
5   6  7  8
9  10 11 12
13 14 15 16
задали сдвиг, например 3, должно получиться:
Код
5   6  7   8
9  10 11  12
13 14 15  16
1   2  3   4
типа циклический сдвиг строк вниз да?
Jleloush
 Аватар для Jleloush
1 / 1 / 1
Регистрация: 16.01.2010
Сообщений: 26
28.07.2010, 02:11  [ТС]     сдвиг строк с заданым шагом в матрице #3
Ауе, да ты правильно понял.
пример фигово написал расплылся)
Aye Aye
 Аватар для Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
28.07.2010, 02:52     сдвиг строк с заданым шагом в матрице #4
у тебя тут:
C++
1
2
3
4
5
6
7
8
9
10
                        if ( i+k>n)
                        {
                                b[(i+k)%n][j]=a[i][j]; // не будет замены, одна строчка потеряется
                        }
                        
                        else
                        {
                
                                b[i+k][j]=a[i][j];
                        }
вот проверь, я совсем чуть-чуть потестил
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
#include <iostream>
using namespace std;
int main()
{
    cout << "enter number of rows and columns:\n";
    int n;
    cin >> n;
    int m[n][n];
    cout << "enter step:\n";
    int step;
    cin >> step;
    int k=0;
    for (int i=0; i<n;i++)
    {
        for (int j=0;j<n;j++) m[i][j]=k++,cout << m[i][j]<< ' ';
        cout << '\n';
    }
    cout <<"---------------\n";
    step = step % n;
    for (int z=0;z<step;z++)
    for (int j=0; j<n;j++)
    {
        int tmp1=m[0][j];
        for (int i=0;i<n;i++)
        {
            int tmp2=m[(i+1) % n][j];
            m[(i+1) % n][j]=tmp1;
            tmp1=tmp2;
        }
    }
    for (int i=0; i<n;i++)
    {
        for (int j=0;j<n;j++)cout << m[i][j]<< ' ';
        cout << '\n';
    }
    return 0;
}
Yandex
Объявления
28.07.2010, 02:52     сдвиг строк с заданым шагом в матрице
Ответ Создать тему
Опции темы

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