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

Все нечетные строки матрицы сдвинуть циклически на К элементов влево - C++

Восстановить пароль Регистрация
 
Keitlin16
1 / 1 / 0
Регистрация: 12.01.2013
Сообщений: 83
19.11.2013, 23:23     Все нечетные строки матрицы сдвинуть циклически на К элементов влево #1
Помогите пожалуйста нужно нужно создать двумерный динамический массив и все нечетные строки матрицы сдвинуть циклически на К элементов влево. Я попыталась хотя бы просто их сдвинуть но у меня не получается не могли бы вы помочь ?
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
88
89
90
91
92
93
94
95
#include <iostream>
#include <stdlib.h>
#include <conio.h>
 
int **formMatr (int &n, int &m)
{
    
printf ("\n enter - n  " ) ;
    scanf ("%d",&n);
printf ("\n enter - m  " ) ;
    scanf ("%d",&m);
    
int **matr = new int *[n];
for (int i=0; i<n; i++)
matr[i]=new int [m];
return matr;
}
 
int **formMatr2 (int **matr,int &n, int &m)
{
 
for (int i=0; i<n; i++)
for (int j=0; j<m; j++)
  matr[i][j]=rand()%20;
 
 
return matr;
}
 
void print (int **matr, int n, int m)
{
    
    for (int i=0; i<n; i++)  
    {
    for (int j=0; j<m; j++)  printf ("%7d ",matr[i][j]) ;  
    printf ("\n" ) ;  
    }
}
void perevorot (int **matr, int &m, int n)
{
 
    int tmp,el,o,p,k;
    int i, j;
printf ("\nVvedte sdvig: ");
scanf ("%d",&el);
 
    
 
    if (el) {
        while (i-- > 0) {
            for (i = 0; i < n - 1; i++) {
                for (j = 0; j < m; j++) {
                    tmp = matr[j][i];
                    matr[j][i] = matr[j][i + 1];
                    matr[j][i + 1] = tmp;
                }
            }
        }
    } else {
        while (i-- > 0) {
            for (i = n - 1; i > 0; i--) {
                for (j = m - 1; j >= 0; j--) {
                    tmp = matr[j][i];
                    matr[j][i] = matr[j][i - 1];
                    matr[j][i - 1] = tmp;
                }
            }
        }
    }
for (int i=0; i<n; i++)  
    {
    for (int j=0; j<m; j++) 
        printf ("%7d ",matr[i][j]) ;  
    printf ("\n" ) ;  
    }
 
    
    
}
 
int main ()
{
    int **matr;
    int n,m;
    matr=formMatr(n,m);
    matr=formMatr2(matr,n,m);
    print (matr,n,m);
    perevorot(matr,m,n);
   
    for (int i=0; i<n; ++i)
    delete [] matr [i];
    delete [] matr ;
    system("PAUSE");
    return 0;
    }
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2013, 23:23     Все нечетные строки матрицы сдвинуть циклически на К элементов влево
Посмотрите здесь:

Сдвинуть все элементы последовательности циклически на k позиций влево C++
Все элементы массива X(30) циклически сдвинуть на n позиций влево C++
Циклически сдвинуть массив на 1 элемент влево C++
Двумерный динамический массив. Все нечетные строки матрицы сдвинуть циклически на К элементов влево C++
Сдвинуть элементы массива циклически на M влево, перевернуть нечетные строки и посчитать простые числа C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Folko
 Аватар для Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
19.11.2013, 23:58     Все нечетные строки матрицы сдвинуть циклически на К элементов влево #2
Keitlin16, в смысле какие то ошибки выдает или программа работает корректно, но результаты получаются не те?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.11.2013, 00:06     Все нечетные строки матрицы сдвинуть циклически на К элементов влево #3
Для начала, у вас, в perevorot(), i неинициализированна, а используется в while().
Folko
 Аватар для Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
20.11.2013, 00:08     Все нечетные строки матрицы сдвинуть циклически на К элементов влево #4
alsav22,

Не по теме:

вообще переворот - это зачастую спонтанное событие, учесть всякие мелочи не представляется возможным

Genn55
341 / 188 / 37
Регистрация: 26.12.2012
Сообщений: 658
20.11.2013, 00:19     Все нечетные строки матрицы сдвинуть циклически на К элементов влево #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// цикиличний сдвиг массива на k позиций влево
cout<<"\n введите количество позиций сдвига k= ";
cin>>k;
 if(k>0)
 {
  while (k!=0)
  {
   i= N-1;
   int temp= A[0];
         for(i = 0; i < N - 1; i++)
          A[i] = A[i + 1];
           A[N - 1] = temp;
           k --;
  }
 }
Keitlin16
1 / 1 / 0
Регистрация: 12.01.2013
Сообщений: 83
20.11.2013, 11:09  [ТС]     Все нечетные строки матрицы сдвинуть циклически на К элементов влево #6
она ничего не выдает просто закрывает программу

Добавлено через 40 минут
Помогите пожалуйста сдвинуть циклически я столбцы сдвинула но вот только мне нужно что бы только нечетные сдвигались а четные оставались на месте
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
#include <iostream>
#include <stdlib.h>
#include <conio.h>
 
int **formMatr (int &n, int &m)
{
    
printf ("\n enter - n  " ) ;
    scanf ("%d",&n);
printf ("\n enter - m  " ) ;
    scanf ("%d",&m);
    
int **matr = new int *[n];
for (int i=0; i<n; i++)
matr[i]=new int [m];
return matr;
}
 
int **formMatr2 (int **matr,int &n, int &m)
{
 
for (int i=0; i<n; i++)
for (int j=0; j<m; j++)
  matr[i][j]=rand()%20;
 
 
return matr;
}
 
void print (int **matr, int n, int m)
{
    
    for (int i=0; i<n; i++)  
    {
    for (int j=0; j<m; j++)  
        printf ("%7d ",matr[i][j]) ;  
    printf ("\n" ) ;  
    }
}
void perevorot (int **matr, int &m, int &n)
{
 
    int temp,el,o,p,k;
    int i, j,j2;
printf ("\nVvedte sdvig: ");
scanf ("%d",&k);
 
// öèêèëè÷Г*ГЁГ© ñäâèã Г¬Г*Г±Г±ГЁГўГ* Г*Г* k ïîçèöèé âëåâî
 for(i = 0; i < n; i++)
                        {
                            for(j = 0; j < m; j++)
                                {
                                    j2 = (j + k + m)%m;
                                    printf ("%7d ",matr[i][j2]) ;
                                    
                                }
                            printf ("\n" ) ;
                        }
}
 
int main ()
{
    int **matr;
    int n,m;
    matr=formMatr(n,m);
    matr=formMatr2(matr,n,m);
    print (matr,n,m);
    perevorot(matr,m,n);
   
    for (int i=0; i<n; ++i)
    delete [] matr [i];
    delete [] matr ;
    system("PAUSE");
    return 0;
    }
Yandex
Объявления
20.11.2013, 11:09     Все нечетные строки матрицы сдвинуть циклически на К элементов влево
Ответ Создать тему
Опции темы

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