Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
ФРАНК
0 / 0 / 0
Регистрация: 16.05.2018
Сообщений: 21
#1

Заполнение массива по спирали

16.05.2018, 16:06. Просмотров 183. Ответов 4
Метки нет (Все метки)

НАПРИМЕР ДАН МАССИВ N*N ТОЕСТЬ N в квадрате если 4 то равен 16 если 5 то равен 25 на экране должно вводиться следуещее

вот

1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7 то есть как улитка

а для 5 также только до 25 и так далее когда для 7 когда для 8


1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

Заполнение массива по спирали C++
Дано число n. Создайте массив A и заполните его по спирали, начиная с числа 0 в...

Заполнение двумерного массива по спирали
По возможности, помогите получить целочисленную квадратную матрицу порядка...

Написать комментарии к рабочему коду (Заполнение массива по спирали)
Буду благодарен за помощь. // Заполнение по спирали #include <string>...

Заполнение матрицы по спирали
Дано натуральное N (1<=N<=10). Заполнить матрицу порядка N*N целыми числами 0,...

Заполнение матрицы по спирали
как заполнить матрицу ЛП, от левого верхнего угла по спирали: вправо - вниз -...

4
olegsmolin
1 / 1 / 0
Регистрация: 16.05.2018
Сообщений: 2
16.05.2018, 16:23 #2
C++
1
2
3
4
5
6
7
8
const int N=5;
int arr[N][N];
for(int i=0;i<N;i++){
  for(j=0;j<N;j++{
    cout<<arr[i][j]<<" ";
  }
 cout<<endl;
}
1
ФРАНК
0 / 0 / 0
Регистрация: 16.05.2018
Сообщений: 21
16.05.2018, 16:29  [ТС] #3
пожалуйста по подробнее а то мой С++ выдает ошибку
0
ФРАНК
0 / 0 / 0
Регистрация: 16.05.2018
Сообщений: 21
16.05.2018, 17:31  [ТС] #4
Заполнить массив А размером п*m следующим образом, например, n=5 и m=5:
1 2 3 4 5
10 9 8 7 6
11 12 13 14 15
20 19 18 17 16
21 22 23 24 25
То есть заполняется в виде "змейки". мне нужно чтобы оно заполнялся в виде" улитки"

{Для того, чтобы заполнить, надо вывести правило заполнения, а оно в данном случае будет таким: если ряд нечетный (то есть номер строки - нечетное число), то A [i,j]=(i-1)*m+j, иначе (то есть когда строка четная) A[i,j]==i*m-j+l.
По этому правилу и составляем процедуру заполнения. }

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
program prim 1 ;
  uses crt;
  type mas=array[1..100,1.. 100] of integer;
  var a:mas;
      i,j,n,m:integer;
begin
  clrscr;
  write('n=m=');readln(n,m);
  for i:=1 to n do 
    begin
      for j:=1 to m do 
        begin
{Заполняем массив по выведенному правилу заполнения и выводим его на экран.}
          if i mod 2 =1 then
            a[i,j]:=(i-1)*m+j
            else a[i,j]:=i*m-j+1;
          write(a[i,j]:4);
        end;
      writeln;
    end;
  readln;
end.
ЧТО И ГДЕ ИЗМЕНИТЬ?
0
Fixer_84
836 / 646 / 646
Регистрация: 30.04.2016
Сообщений: 2,167
23.06.2018, 18:35 #5
ФРАНК, здравствуйте! Я решил эту задачу так:

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
#include <bits/stdc++.h>
 
void spiral(int** a, int n, int m, int d = 0, int k = 0) {
int i, j;
i = d; 
for (int j = d; j < m - d; j++) a[i][j] = ++k;
    if (k == n * m) return;
j = m - 1 - d;  
for (int i = 1 + d; i < n - d; i++) a[i][j] = ++k;
    if (k == n * m) return;
i = n - 1 - d;
for (int j = m - 2 - d; j >= d; j--) a[i][j] = ++k;
    if (k == n * m) return;
j = d;
for (int i = n - 2 - d; i >= 1 + d; i--) a[i][j] = ++k;
    if (k == n * m) return;
        if (k < n * m) spiral(a, n, m, d + 1, k); 
}
 
    using namespace std;
 
int main() {
    int n, m;
    cout << "Enter a matrix size:\n";
    cout << "n = ";
    cin >> n;
    cout << "m = ";
    cin >> m;
    int** a = new int* [n];
    for (int i = 0; i < n; i++) {
        a[i] = new int[m];
    }
    spiral(a, n, m);
    cout << "Target matrix:\n";
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {   
            cout.width(4);
            cout << a[i][j] << " ";
        }
        cout << "\n";
    }
    for (int i = 0; i < n; i++) {
        delete [] a[i];
    }
    delete [] a;
    system("pause");
    return 0;
}
0
23.06.2018, 18:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.06.2018, 18:35

Заполнение матрицы по спирали
Напишите программу, которая заполняет матрицу из N строк и M столбцов...

Заполнение матрицы по спирали
Заполнить матрицу 10х10 числами от 1 до 100 по порядку, начиная с верхнего...

Заполнение матрица по спирали
Как получить такой массив как: 1 1 1 1 1 0 0 0 0 1 1 1 1 0 1 1 0 0 0 1 1 1...


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

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

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