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

Циклический сдвиг матрицы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Данная матрицы сложения со слов порядка n * n. http://www.cyberforum.ru/cpp-beginners/thread577133.html
Помогите решить срочно..Пожалуйста. Данная матрицы сложения со слов порядка n * n. Слова разделяются пробелами. Определить и вывести на экраны слова побочной диагонали.
C++ Разделить введенную строку пополам и соединять в обратном порядке помогите пожалуйста написать программу! программа должна разделять введенную строку пополам и соединять в обратном порядке!если слово нечетное то оставить букву в середине без изменений! http://www.cyberforum.ru/cpp-beginners/thread577125.html
C++ Массив Задача
День добрый!! Помогите с задачей. Дан массив размера N. Найти номера двух ближайших по значению элементов из этого массива (то есть элементов с наименьшим модулем разности) и вывести эти номера в порядке возрастания. Заранее спасибо!!
C++ Нужна помощь по блок схемах!
К этой програме мне нужна блок схема, помогите пожалуйста. class parampampam { private: #define DEFAULT_SIZE ( 5 ) int **matrix; int *array; size_t size; size_t index_array;
C++ Одномерные,двумерные массивы на языке С\С+ http://www.cyberforum.ru/cpp-beginners/thread577092.html
огромная просьба,извините заранее за назойливость только начала изучать с+,очень нужен для работы.тут встала проблема две задачи на массивы.не могли бы мне помочь с решением их и составлением блок-схем для них а дальше ухвачу. 1 задача.В произвольном одномерном массиве, содержащий числовые значения, определить местоположение элементов массива равными значению максимального элемента. 2 задача.В...
C++ Функция Polyline Подскажите использрвание этой функции! подробнее

Показать сообщение отдельно
Buckstabue
 Аватар для Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
20.05.2012, 19:06     Циклический сдвиг матрицы
Ну так вы неправильно выполняете выделение памяти под массив
Надо так
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
//программа циклического сдвига
//заданного массива целых чисел
//на T элементов вправо
 
 
#include <stdlib.h>
#include <stdio.h>
 
void shiftRight( int **matrix, int rows, int columns, int shift);
 
 
int main()
{
   int rows,columns,shift,i,j;
   int **matrix;
   printf("Enter rows and columns of matrix ");
   scanf("%d",&rows);
   scanf("%d",&columns);
   //случайное заполнение
   //и вывод двумерного массива
   matrix = ( int ** ) malloc( rows * sizeof (int *) );
   for(i=0;i<rows;++i)
   {
      matrix[i] = (int *)malloc( columns * sizeof (int) );
      for(j = 0; j < columns; ++j)
      {
         matrix[i][j]= -50 + rand()%100;
         printf( "%3d\t", matrix[i][j] );
      }
      printf("\n");
   }
 
   printf("Enter nuber of shift: ");
   scanf( "%d", &shift );
   shiftRight( matrix, rows, columns, shift );
   printf("\n");
 
   for( i = 0; i < rows; ++i )
   {
      for( j = 0; j < columns; ++j )
         printf( "%3d\t", matrix[i][j] );
      printf("\n");
   }
 
   for( i = rows - 1; i >= 0; --i )
      free( matrix[i] );
   free( matrix );
 
   return 0;
}
 
 
void shiftRight( int **matrix, int rows, int columns, int shift )
{
   int i;
   int MATRIX_SIZE = rows * columns;
   shift = shift % MATRIX_SIZE;
 
   if ( shift == 0 )
      return;
 
   int *temp_matrix = (int *) malloc( MATRIX_SIZE * sizeof (int) );
 
   for ( int i = 0; i < MATRIX_SIZE; ++i )
   {
      temp_matrix[i] = matrix[ i / columns ][ i % columns ];
   }
 
   for (i = 0; i < MATRIX_SIZE; ++i )
   {
      matrix[i / columns] [i % columns] = temp_matrix[(i + MATRIX_SIZE - shift) % MATRIX_SIZE];
   }
 
   free( temp_matrix );
}
 
Текущее время: 20:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru