Сформировать следующий двумерный массив:
1 2 3 4 5
5 1 2 3 4
4 5 1 2 3
3 4 5 1 2
2 3 4 5 1
Все форумы облазил, но ничего не нашёл. Может хоть Вы поможете?
Пробовал делать так:
int main()
{
int j, i, mas[5][5], s = 1;
for (j = 0; j < 5; j++)
{
for (i = 0; i < 5 + j; i++)
{
mas[i][j + i] = mas[i + j][i] = s;
}
s++;
}
/* вывод на экран */
for (i = 0; i<5; i++) {
for (j = 0; j<5; j++)
printf("%2d ", mas[i][j]);
printf("\n");
}
system("pause");
return 0;
}
Получается вот такая матрица:
1 2 3 4 5
2 1 2 3 4
3 2 1 2 3
4 3 2 1 2
5 4 3 2 1 - Числа над главной диагональю расположены так как надо, но вот под ней (
Можно, наверное, и так:
// верхняя треугольная матрица
for (int i = 0; i < N; i++)
for (int j = i; j < M; j++)
F[i][j] = 0;
// нижняя треугольная матрица
for (int i = 0; i < N; i++)
for (int j = 0; j <= i; j++)
F[i][j] = 0;
И в них уже отдельно прописывать.
Но до меня не доходит. . .
....
#include <stdio.h>
#include <conio.h>
main()
{
for(i=0; i< 5; i++)
{
for ( j=1; j<6-i; j++)
{
printf("%d", j);
}
printf("\n");
for ( x=5-i; x<=5; x++)
{
printf("%d", x);
}
}
getch();
}
То что нужно, но не массив. Можно этот код к массиву пристроить?
Если кто знает код со сдвигом, то напишите, буду очень признателен!
Другие языки программирования и технологии
Двумерный массив с++ Пожалуйста =(
mas[i][j] = (5-i+j) % 5 + 1 ?
mas[0][0] = (5-0+0) % 5 + 1 = 1
mas[1][0] = (5-1+0) % 5 + 1 = 4 + 1 = 5
mas[0][0] = (5-0+0) % 5 + 1 = 1
mas[1][0] = (5-1+0) % 5 + 1 = 4 + 1 = 5
Со сдвигом? Да пожалуйста!
#include <iostream>
using namespace std;
void shift_right(int*, int, int);
void shift_right(int*, int);
int main() {
const int n = 5;
int a[n][n];
for (int r = 0, c, m; r < n; ++r, cout << endl) {
for (c = 0, m = 1; c < n; ++c, ++m) a[r][c] = m;
shift_right(a[r], n, r);
for (c = 0; c < n; ++c) cout << ' ' << a[r][c];
}
cin.get();
}
void shift_right(int* a, int n, int q) { if (a) for (int k = 0; k < q; ++k) shift_right(a, n); }
void shift_right(int* a, int n) {
if (a && n > 1) {
int tmp = a[n - 1], k;
for (k = n - 1; k; --k) a[k] = a[k - 1];
a[k] = tmp;
}
}
Этот код использует функцию сдвига элемента линейного массива вправо на одну позицию.
Также имеется перегруженная функция, которая имеет дополнительный третий параметр. Он указывает на сколько позиций следует сдвинуть все элементы массива.
Как это сделать для сдвига влево - решите в домашнем задании. Ответ жду по почте. Оценивать буду с фанатичной предвзятостью)
#include <iostream>
using namespace std;
void shift_right(int*, int, int);
void shift_right(int*, int);
int main() {
const int n = 5;
int a[n][n];
for (int r = 0, c, m; r < n; ++r, cout << endl) {
for (c = 0, m = 1; c < n; ++c, ++m) a[r][c] = m;
shift_right(a[r], n, r);
for (c = 0; c < n; ++c) cout << ' ' << a[r][c];
}
cin.get();
}
void shift_right(int* a, int n, int q) { if (a) for (int k = 0; k < q; ++k) shift_right(a, n); }
void shift_right(int* a, int n) {
if (a && n > 1) {
int tmp = a[n - 1], k;
for (k = n - 1; k; --k) a[k] = a[k - 1];
a[k] = tmp;
}
}
Этот код использует функцию сдвига элемента линейного массива вправо на одну позицию.
Также имеется перегруженная функция, которая имеет дополнительный третий параметр. Он указывает на сколько позиций следует сдвинуть все элементы массива.
Как это сделать для сдвига влево - решите в домашнем задании. Ответ жду по почте. Оценивать буду с фанатичной предвзятостью)
Может надо так: ?
#include <iostream>
using namespace std;
int main()
{ int j,k,N;
cout << "(N x N), N="; cin >>N;
int* a=new int[N*N];
int** p=new int*[N];
for(j=0;j-N;p[j++]=&a[j*N]);
for(k=0;k-N;k++) for(j=0;j-N;a[N*k+j]=1+(k+j++)%N);
for(j=0;j-N;j++,cout << endl) for(k=0;k-N;k++) cout << p[j][k] << '\t';
delete [] a,p;
return 0;
}
#include <iostream>
using namespace std;
int main()
{ int j,k,N;
cout << "(N x N), N="; cin >>N;
int* a=new int[N*N];
int** p=new int*[N];
for(j=0;j-N;p[j++]=&a[j*N]);
for(k=0;k-N;k++) for(j=0;j-N;a[N*k+j]=1+(k+j++)%N);
for(j=0;j-N;j++,cout << endl) for(k=0;k-N;k++) cout << p[j][k] << '\t';
delete [] a,p;
return 0;
}
Думаешь кто-то 'за спасибо' будет на тебя работать?!
Похожие вопросы
- .помогите пожалуйста двумерный массив на языке c++
- помогите срочно надо Квадратные массивы тема: Двумерные массивы на языке C++
- дан двумерный массив С(3,4).Получите новый массив А путём увеличения всех элементов исходного массива на число С.
- Необходимо упорядочить строки двумерного массива, по возрастанию первого эл-та. СИ.
- Как можно передать ДВУМЕРНЫЙ массив в функцию в С++, не создавая его, как глобальный. Пример ниже:
- Что такое Двумерный массив?
- Ассемблер двумерный массив
- Динамические двумерные массивы С++. Помогите разобраться.
- Перебор двумерного массива. Вопрос на засыпку.
- Каким образом в c++ можно передать двумерный массив в фунцкию?