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

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

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

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

18.09.2010, 22:35. Просмотров 605. Ответов 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++
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;, &quot;очень холодно&quot;. Я так...

Определить базовый класс "Матрица" и класс-потомок "Треугольная матрица" - C++
Нужно определить класс &quot;матрица&quot; с возможностью динамического выделения и освобождения памяти, наполнения матрицы, сохранения и чтения из...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование) - C++
Разработать программу с использованием наследования классов, реализующую классы: − воин; − пехотинец(винтовка); − матрос(кортик). ...

Класс "Матрица". Перегрузка оператора "минус" - C++
Помогите дописать программу или исправить ее. Нужно было написать программу, где создать класс матрицы, используя двухмерный динамический...

Класс "Матрица". "Правило трёх" - C++
Проблема в том, что я не могу вернуть тип данных &quot;Матрица&quot;.Что я делаю не так понял в ООП? // matrica.cpp : Defines the entry point for...

Композиция классов "Матрица" и "Вектор" - C++
Люди добрые, здравствуйте. недавно в одной из тем был выложен вот такой класс вектор: на основе этого класса нужно разработать класс...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
PointsEqual
ниначмуроФ
834 / 518 / 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");
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.09.2010, 23:16
Привет! Вот еще темы с ответами:

Класс "Матрица", перегрузка оператора "+" - C++
Здравствуйте. Создаю класс матрица, в нём перегружаю оператор &quot;+&quot;. На этапе компиляции всё замечательно, но при запуске программа вылетает....

Упорядочить элементы матрицы "по спирали" - C++
Нам дана матрица размера NxM с рандомными числами и из нее необходимо сделать матрицу согласно условию: Числа должны идти по убыванию в...

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания" - C++
Создать класс Книга поля: название книги,количество страниц,год издания методы: вычислить сколько лет книге и количество дней прошедших...

Создать абстрактный класс "Издание" и производные классы "Книга", "Статья", "Электронный ресурс" - C++
1. Создать абстрактный класс Издание с методами, позволяющими вывести на экран информацию об издании, а также определить является ли данное...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
18.09.2010, 23:16
Ответ Создать тему
Опции темы

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