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

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

Войти
Регистрация
Восстановить пароль
 
xod
156 / 46 / 17
Регистрация: 01.07.2014
Сообщений: 185
#1

Развернуть матрицу, как спираль, в линейный массив - C++

13.07.2014, 19:37. Просмотров 335. Ответов 1
Метки нет (Все метки)

Дана квадратная матрица, она заполняется рандомно и
выносится на экран. Требуется преобразовать эту матрицу
в линейный массив, начиная с элемента mas[1][1] и двигаясь
по часовой стрелке сделать первый круг и далее, как по спирали,
второй круг, пока не закончатся все элементы. Полученный
массив надо распечатать, чтобы можно было посмотреть на
результат. В связи с разработкой этой программы у меня возникло
несколько вопросов. 1. Я не знал как отладить программу и не
придумал ничего лучшего как применить system("pause"), чтобы
можно было остановить программу и посмотреть, что она выдаёт.
Есть ли в самой С++ средства отладки, ну хотя бы оператор Stop,
или что-то иное?? 2. Вопрос 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
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <iomanip>
#include <time.h>
using namespace std;
 
int mas[10][10];
int b[100];
int i, j, l, m, n, n1;
int k = 0;
 
void spi(int m)
{
   for (j = m; j < n1 - m; j++){
        b[k] = mas[m][j];
        k ++;}
    for(i = m; i < n1 - m; i++){
        b[k] = mas[i][n1 - m];
        k ++;}
    for (j = n1 - m; j > m ; j--){
        b[k] = mas[n1 - m][j];
        k ++;}
    for (i = n1 - m; i > m ; i--){
        b[k] = mas[i][m];
        k ++;}
}
int main()
{
    srand(time(NULL));
    cout << "N = ? ";
    cin >> n;
    n1 = n - 1;
 
    for (i = 0; i < n; i++)
        for (j = 0; j < n; j++)
            mas[i][j] = rand()% 20;
 
    for (i = 0; i < n; i++){
        for (j = 0; j < n; j++)
            cout << setw(4) << mas [i][j] ;
            cout << "\n";}
 
    for(m = 0; m < n / 2; m++ )
         spi(m);
    if(n%2 == 1) b[n * n - 1] = mas[(n1)/2][(n1)/2];
    cout << "\n";
 
    for (i = 0; i <  n * n; i++){
            cout.width(3) ;
            cout << b[i];}
    cout << endl;
    system("Pause");
    return 0;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.07.2014, 19:37     Развернуть матрицу, как спираль, в линейный массив
Посмотрите здесь:

C++ Развернуть матрицу на 90 градусов за часовой стрелкой.
C++ Развернуть матрицу на 90o по часовой стрелке.
Развернуть массив, не используя дополнительные массивы и переменные C++
Линейный массив C++
C++ Развернуть динамический массив
C++ Задача№ Массив линейный
C++ Линейный массив
C++ Прототип графического редактора, как переделать спираль с переменным шагом
Дан линейный массив. Получить действительную квадратную матрицу порядка n C++
C++ Char массив, развернуть отдельные слова
C++ Создать линейный массив, отсортировать его в другой массив, вывести адрес всех елементов
C++ Создать линейный массив, отсортировать его в другой массив, вывести адрес всех елементов

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ПерС
366 / 282 / 84
Регистрация: 05.11.2013
Сообщений: 806
Записей в блоге: 5
Завершенные тесты: 1
13.07.2014, 20:14     Развернуть матрицу, как спираль, в линейный массив #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
1. Средства отладки бывают в компиляторе, а не в языке. Есть во всех распространённых.
2. Что значит "ломать голову с видимостью"? Если переменная нужна только функции - она описана в теле функции, проще некуда (в твоём случае внутри spi должны быть i,j,k...). Остальное передаётся через параметры.
Yandex
Объявления
13.07.2014, 20:14     Развернуть матрицу, как спираль, в линейный массив
Ответ Создать тему
Опции темы

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