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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Екатерина 92
0 / 0 / 0
Регистрация: 23.12.2009
Сообщений: 12
#1

матрица "по спирали". - C++

18.09.2010, 22:35. Просмотров 591. Ответов 5
Метки нет (Все метки)

знаю что задача была уже сдесь ... но просто она считает не так как надо... помогите пожалуйста!!! вот условие задачи: Составить программу, которая заполняет квадратную матрицу порядка n натуральными числами 1, 2, 3, … n2, записывая их в нее «по спирали».
Например, для n=5 получаем следующую матрицу:
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9

находила решение но оно не правильно считает вот оно:
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
#include <iostream>
 
using namespace std;
 
const int dx[] = {0,1,0,-1};
const int dy[] = {1,0,-1,0};
int a[100][100];
 
int main()
{
int n;
cout << "Enter n: ";
cin >> n;
for(int i = 1; i <= n; i++)
{
a[0][i] = -1;
a[i][0] = -1;
a[n+1][i] = -1;
a[i][n+1] = -1;
}
int x = 1, y = 1, d = 0;
for(int i = 1; i <= n*n; i++)
{
a[x][y] = i;
if(a[x+dx[d]][y+dy[d]] != 0)
d = (d+1)%4;
x += dx[d];
y += dy[d];
}
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= n; j++)
cout << a[i][j] << ' ';
cout << endl;
}
system("pause");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.09.2010, 22:35     матрица "по спирали".
Посмотрите здесь:

Чтение матрицы "по спирали" C++
C++ реализация класса "симметричная матрица целых чисел"...
является ли введенная с клавиатуры квадратная матрица "магическим" квадратом C++
C++ Проверить, является ли введенная с клавиатуры квадратная матрица "магическим" квадратом
Международная олимпиада по программированию 1994г. Задач "Матрица простых чисел". C++
Проверить является ли квадратная матрица " магическим квадратом" C++
C++ Проверить, является ли введенная с клавиатуры квадратная матрица "Магическим квадратом"
C++ Класс "Матрица", ошибка при выводе результата
Задана матрица размером NxM. Определить количество "особых" элементов матрицы C++
Реализовать умножение матриц в пользовательском классе "Матрица" C++
C++ Упорядочить элементы матрицы "по спирали"
В пользовательском классе "Матрица" реализовать функцию-член для вычисления определителя C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
PointsEqual
ниначмуроФ
833 / 517 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
18.09.2010, 22:40     матрица "по спирали". #2
это Заполнение матрицы змейкой (по спирали) не подойдет?
Екатерина 92
0 / 0 / 0
Регистрация: 23.12.2009
Сообщений: 12
18.09.2010, 22:47  [ТС]     матрица "по спирали". #3
из тех задач одна только запускается и то она вылетает почему то ... =((((((((((
Хохол
Эксперт C++
475 / 443 / 13
Регистрация: 20.11.2009
Сообщений: 1,292
18.09.2010, 22:52     матрица "по спирали". #4
Действительно, мое решение из первого поста пишет что-то странное. Но если изменить его вот так, то пишет нормально.
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
#include <iostream>
 
using namespace std;
 
const int dx[] = {0,1,0,-1};
const int dy[] = {1,0,-1,0};
int a[100][100];
 
int main()
{
        int n;
        cout << "Enter n: ";
        cin >> n;
        for(int i = 1; i <= n; i++)
        {
                a[0][i] = -1;
                a[i][0] = -1;
                a[n+1][i] = -1;
                a[i][n+1] = -1;
        }
        int x = 1, y = 1, d = 0;
        for(int i = 1; i <= n*n; i++)
        {
                a[x][y] = i;
                if(a[x+dx[d]][y+dy[d]] != 0)
                        d = (d+1)%4;
                x += dx[d];
                y += dy[d];
        }
        for(int i = 1; i <= n; i++)
        {
                for(int j = 1; j <= n; j++)
            {
          int tmp = a[i][j];
          //cout << a[i][j] << '    ';
              cout << tmp << '  ';  // изменено только это
            }
                cout << endl;
        }
        system("pause");
}
Кто-нибудь объяснит, втфиго?
Екатерина 92
0 / 0 / 0
Регистрация: 23.12.2009
Сообщений: 12
18.09.2010, 23:02  [ТС]     матрица "по спирали". #5
все ровно не понимаю почему он так считает .... =%
Хохол
Эксперт C++
475 / 443 / 13
Регистрация: 20.11.2009
Сообщений: 1,292
18.09.2010, 23:16     матрица "по спирали". #6
А, я все понял. когда я писал, ' ' - это у меня был таб. После вставки сообщения на форум, он был заменен то ли на кучу пробелов, то ли еще на что-то непонятное. В общем если использовать этот код, он вместо таба выводит код этого странного символа.
Мораль - используем '\t'.

Добавлено через 42 секунды
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
#include <iostream>
 
using namespace std;
 
const int dx[] = {0,1,0,-1};
const int dy[] = {1,0,-1,0};
int a[100][100];
 
int main()
{
        int n;
        cout << "Enter n: ";
        cin >> n;
        for(int i = 1; i <= n; i++)
        {
                a[0][i] = -1;
                a[i][0] = -1;
                a[n+1][i] = -1;
                a[i][n+1] = -1;
        }
        int x = 1, y = 1, d = 0;
        for(int i = 1; i <= n*n; i++)
        {
                a[x][y] = i;
                if(a[x+dx[d]][y+dy[d]] != 0)
                        d = (d+1)%4;
                x += dx[d];
                y += dy[d];
        }
        for(int i = 1; i <= n; i++)
        {
                for(int j = 1; j <= n; j++)
                {
                    int tmp = a[i][j];
                    cout << a[i][j] << '\t';
                }
                cout << endl;
        }
        system("pause");
}
Yandex
Объявления
18.09.2010, 23:16     матрица "по спирали".
Ответ Создать тему
Опции темы

Текущее время: 11:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru