С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Использование шаблона функции - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Прочитать 5-ю строку из файла http://www.cyberforum.ru/cpp-beginners/thread1175569.html
подскажите пожалуйста как с помощью потоков прочесть текстовую строку и поместить её в массив?
C++ Найти максимальное число из, встречающихся в матрице более одного раза Хей. Есть рабочая программа, но для её полной правильности в ней нужно использовать Функцию или процедуру. Задание: Найти максимальное число из чисел, встречающихся в заданной матрице размером nxn... http://www.cyberforum.ru/cpp-beginners/thread1175561.html
Неопознанный вылет калькулятора C++
функция перевода стала криво работать после переписывания кода на классы. при запуске просто зависает. есть какие-то идеи? #pragma once #include <iomanip> //Подключение манипуляторов ввода-вывода...
Заменить на 0 значения элементов матрицы, лежащих выше главной диагонали C++
Ребят помогите!!! сижу на экзамене Необходимо создать приложение в визуальной среде, которое запрашивает размерность квадратного двумерного массива, заполняет массив случайными числами от 3 до...
C++ Перегрузка методов класса Прямоугольник http://www.cyberforum.ru/cpp-beginners/thread1175538.html
1.Продемонстрировать перегрузку функций-членов класса "Прямоугольник", функция член – "Нарисовать". Различать случаи собственно прямоугольника и квадрата. Программа рисует квадрат и прямоугольник...
C++ Как работает cout? есть такая функция void output(recipe *list, int N){ for(int i=0; i<N; i++){ cout<<list.name<<endl; cout<<"руб"<<list.price<<list.ccal<<list.time<<"\n\n"; } }работает ну ооочень странно подробнее

Показать сообщение отдельно
Delaimo
1 / 1 / 0
Регистрация: 26.10.2012
Сообщений: 51

Использование шаблона функции - C++

14.05.2014, 12:43. Просмотров 518. Ответов 15
Метки (Все метки)

Есть рабочая програма, но преподаватель попросил её немного упростить. Прошу помочь. Всё приведу ниже.
Задание: Осуществить циклический сдвиг элементов квадратной матрицы размерностью MxN вправо на К элементов таким образом: элементы i-той строки сдвигаются в последний столбец сверху вниз, из него в последнюю строку справа налево, из нее в первый столбец снизу вверх, из него в первую строку; для остальных элементов аналогично.
Или проще - заданую матрицу просто повернуть.
Код програмы:
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#define N 6
 
int main()
{       int spiral[N][N], Step, cur[4*(N-1)], shift[4*(N-1)];
        int i,j,k,c,edge;
 
 
        srand(time(NULL));
        printf("Original array:\n");
        for(i=0;i<N;i++)
        {       for(j=0;j<N;j++) 
                {   spiral[i][j]=rand()%20+1;
                    printf("%6d",spiral[i][j]);
                }
                printf("\n");
        }
 
        printf("\nШаги для поворота. Шаг = ");
        scanf("%d",&Step);
        
        for(k=0; k<N/2;k++)
        {       edge = N-1-k;
                
      
        c=0;
        for(j=k;j<edge;j++)             
                {      cur[c] = spiral[k][j];
                        c++;
                }
                for(i=k;i<edge;i++)             
                {      cur[c] = spiral[i][edge];
                        c++;
                }
                for(j=edge;j>=k;j--)    
                {      cur[c] = spiral[edge][j];
                        c++;
                }
                for(i=edge-1;i>k;i--)             
                {       cur[c] = spiral[i][k];
                        c++;
                }
 
        for(i=0;i<4*(N-2*k-1);i++)
            shift[(i+Step)%(4*(N-2*k-1))]=cur[i];
 
      
        c=0;
        for(j=k;j<edge;j++)             
                {   spiral[k][j] = shift[c];   
                    c++;
                }
                for(i=k;i<edge;i++)             
                {    spiral[i][edge]= shift[c];
                        c++;
                }
                for(j=edge;j>=k;j--)    
                {    spiral[edge][j]= shift[c];
                        c++;
                }
                for(i=edge-1;i>k;i--)             
                {     spiral[i][k]= shift[c];
                        c++;
                }
        }
      
 
        printf("Result:\n");
        for(i=0;i<N;i++)
        {       for(j=0;j<N;j++) printf("%6d",spiral[i][j]);
                printf("\n");
        }
 
        getch();
        return 0;
}
Так вот, препод жалуется на использование одномерного массива. И начиная примерно с этого:
C++
1
2
3
4
5
6
7
8
 c=0;
        for(j=k;j<edge;j++)             
                {      cur[c] = spiral[k][j];
                        c++;
                }
                for(i=k;i<edge;i++)             
                {      cur[c] = spiral[i][edge];
                        c++;
Просит использовать след. выражение:
C++
1
2
3
4
5
6
7
8
9
10
11
for (i=0; i<N/2; i++) {
for (j=0; j<N; i++)
b[j]=a[i,j]
for (j=0l; j<N; i++)
a[i,j]=[j,i]
for()
a[j,i]=a[N-i,j]
for()
a[N-i,j]=a[j, N-i]
...
}
Дальше я не понял. Кто может помочь немного доделать?
Програма работает и делает это правильно, просто нужно использовать то, что указал чуть выше. Сам не понимаю.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.