Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
Salawat
0 / 0 / 1
Регистрация: 01.12.2010
Сообщений: 33
1

Циклический сдвиг элементов массива по диагонали влево вниз

08.01.2011, 07:33. Просмотров 1350. Ответов 3
Метки нет (Все метки)

Квадратный массив N×N по диагонали влево вверх.

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
//---------------------------------------------------------------------------
#include<iostream.h>
#include<iomanip.h>
#include <stdlib.h>
//---------------------------------------------------------------------------
int main(int argc, char* argv[])
{
const int M=4, N=4;        int i,j,k;
int A[M][N];
for (i=0;i<M;i++)
for (j=0;j<N;j++) A[i][j]=rand() % 9+1;
cout<<"massiv A"<<endl;
for (i=0;i<M;i++)
{
for (j=0;j<N;j++)     
cout<<setw(3)<<A[i][j];
cout<<endl;
}
//
cout<<"massiv B"<<endl;
for (i=0; i<N; i++)
{
k=A[i][0];
for (j=0; j<N-1; j++)
{ 
A[i][j]=A[i][j+1];
}
A[i][N-1]=k;
}
for (i=0; i<N; i++)
{ 
k=A[0][i];
for (j=0; j<N-1; j++)
{
A[j][i]=A[j+1][i];
}
A[N-1][i]=k;
}
for (int i=0; i<N; i++)
{  
for (j=0; j<N; j++)
{ 
cout<<setw(3)<<A[i][j];}
cout<<endl;
}
system ("pause");
return 0;
}
//---------------------------------------------------------------------------


Нужно переделать чтобы было влево вниз....... Помогите пожалуйста!!!!!

Добавлено через 7 минут
циклический сдвиг элементов массива по диагонали влево вниз !!!!!!!!!!!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.01.2011, 07:33
Ответы с готовыми решениями:

Квадратный массив N×N по диагонали влево вниз (циклический сдвиг)
Эта программа выполняет циклический сдвиг по диагонали влево вверх, а надо по...

Циклический сдвиг элементов массива влево
Совершить циклический сдвиг элементов массива влево так, чтобы первый...

Осуществить циклический сдвиг элементов массива влево на k позиций
Дан массив размера N и число k (0 &lt; k &lt; 5, k &lt; N). Осуществить циклический...

Циклический сдвиг элементов массива влево на одну позицию
Дан массив размера N. Осуществить циклический сдвиг элементов массива влево на...

Осуществить циклический сдвиг элементов массива влево на одну позицию
Помогите, пожалуйста, решить программы на си++, если не решу мне хана, заранее...

3
and
22 / 22 / 3
Регистрация: 12.05.2009
Сообщений: 43
08.01.2011, 10:41 2
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
/*
 * main.cpp
 *
 *  Created on: Jan 8, 2011
 *      Author: and
 */
 
#include <iostream>
 
int printAr(int **nArr, unsigned int unWidth, unsigned int unHeight);
int sAr(int **nArr, unsigned int unWidth, unsigned int unHeight);
 
int main(int argc, char **argv)
{
    int nWidth = 0, nHeight = 0;
    std::cout<<"Width Height:";
    std::cin>>nWidth>>nHeight;
 
    int **nArr = new int *[nWidth];
    for(int i = 0; i < nWidth; ++i)
    {
        nArr[i] = new int[nHeight];
        for(int j = 0; j < nHeight; ++j)
        {
            nArr[i][j] = i*2 + j;
        }
    }
    printAr(nArr, nWidth, nHeight);
    sAr(nArr, nWidth, nHeight);
    std::cout<<std::endl;
    printAr(nArr, nWidth, nHeight);
 
    for(int i = 0; i < nHeight; ++i)
    {
        delete [] nArr[i];
    }
    delete [] nArr;
    return 0;
}
//
int sAr(int **nArr, unsigned int unWidth, unsigned int unHeight)
{
    int ret = 0;
    if(nArr != NULL)
    {
        ret = 1;
        int temp = nArr[0][0];
        for(int i = 0; i < unWidth; ++i)
        {
            temp = nArr[(i - unHeight + 1)%unHeight][unHeight - 1];
            for(int j = unHeight - 1; j > 0; --j)
            {
                nArr[(i - j)%unWidth][j] = nArr[(i - j + 1)%unWidth][j - 1];
            }
            nArr[i][0] = temp;
        }
    }
 
    return ret;
}
//
int printAr(int **nArr, unsigned int unWidth, unsigned int unHeight)
{
    int ret = 0;
    if(nArr != NULL)
    {
        ret = 1;
        for(int i = 0; i < unHeight; ++i)
        {
            for(int j = 0; j < unWidth; ++j)
            {
                std::cout<<nArr[j][i]<<"\t";
            }
            std::cout<<std::endl;
        }
    }
 
    return ret;
}
Правь сам как тебе нужно.
2
Salawat
0 / 0 / 1
Регистрация: 01.12.2010
Сообщений: 33
08.01.2011, 23:20  [ТС] 3
спасибо!
0
sandye51
09.01.2011, 00:22     Циклический сдвиг элементов массива по диагонали влево вниз
  #4

Не по теме:

Salawat, для спасибо есть кнопка

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2011, 00:22
Привет! Вот еще темы с ответами:

Одномерные массивы (циклический сдвиг всех элементов массива на одну позицию влево)
Написать программу, которая делает циклический сдвиг всех элементов массива а1,...

Циклический сдвиг массива влево
Дан массив y1, ... , y20. Сформировать массив Z1, ... , Z20, элементы которого...

Циклический сдвиг массива влево
условие: задан массив целочисленный состоящий из 10 элементов нужно сделать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru