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

Запись в матрицу по спирали (ввод чисел с клавиатуры) - C++

Восстановить пароль Регистрация
 
Exeron
0 / 0 / 0
Регистрация: 14.08.2014
Сообщений: 11
14.08.2014, 10:30     Запись в матрицу по спирали (ввод чисел с клавиатуры) #1
Нужно ввести n чисел с клавиатуры они записываются в матрицу по спирали из центра (не важно против часовой или по часовой) и если кол-во введенных чисел не 121 все оставшиеся свободными ячейки заполняются нулями.
0000000
0054300
0061200
0078900
0000000
ну как то так
А это запоротый код, который я написал 2 месяца назад и теперь не могу (а точнее ЛЕНЬ) разбирать. И там нет условия с заполнением нулями, я его так и не придумал как сделать.
Код

C++ (Qt)
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<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
using namespace std;
#define N 4
int main()
{       //int spiral[N][N];
        int mas[n][m],i,j;
        //int i,j,k, edge, num = N*N;
        cout<<"Enter numbers"<<endl;
            for(i=0;i<n;i++)
            {
                for(j=0;j<m;j++)
                    {
                    cin>>mas[i][j];
                    }
            }
            cout<<"isxodniy massiv";
 
            for(i=0;i<n;i++)
            {
                for(j=0;j<m;j++)
                {
                    cout<<mas[i][j];
                }
            }
 
        /*for(k=0; k<N/2;k++) //слои
        {       edge = N-1-k;
                for(j=k;j<edge;j++,num--)
                        spiral[k][j]=num;
                for(i=k;i<edge;i++, num--)
                        spiral[i][edge]=num;
                for(j=edge;j>k;j--, num--)
                        spiral[edge][j]=num;
                for(i=edge;i>k;i--, num--)
                        spiral[i][k]=num;
        }*/
 
        if(N%2) //если N-нечетное дополнить центральным элементом
              spiral[N/2][N/2]=num;
 
 
        for(i=0;i<N;i++)
        {
            for(j=0;j<N;j++)
                cout<<spiral[i][j]<<" ";
            cout<<endl;
        }
 
        getch();
        return 0;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.08.2014, 10:30     Запись в матрицу по спирали (ввод чисел с клавиатуры)
Посмотрите здесь:

C++ Ввод чисел с клавиатуры и вывод на экран в шестнадцатеричном и десятичном виде
Ввод с клавиатуры массива из N вещественных чисел C++
Ввод с клавиатуры массива из 10 целых чисел C++
Написать, используя цикл for, ввод с клавиатуры 10 чисел C++
C++ Вывести числовую матрицу 6×9 с помощью датчика случайных чисел и число k(ввод с клавиатуры)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
orange_fox
 Аватар для orange_fox
34 / 34 / 6
Регистрация: 06.04.2014
Сообщений: 189
14.08.2014, 12:39     Запись в матрицу по спирали (ввод чисел с клавиатуры) #2
А если количество строк не будет 121 и в матрице будут незаполненные ячейки, то что там должно находится? 0? -1?
Fallenworld
75 / 75 / 9
Регистрация: 14.04.2014
Сообщений: 408
14.08.2014, 16:10     Запись в матрицу по спирали (ввод чисел с клавиатуры) #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Так а чем вопрос то? код сам банальный
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
#include <iostream>
#include <stdio.h>
using namespace std;
const int Height(11), Width(11);
 
    int main() {
    int M[Height][Width]{{0}};
    int counter(1), i(5), j(5);
    int a(6),b(6),c(5),d(5);//ассимптоты кругового движения
    
    while(cin>>M[i][j]){
        if(counter){
            if(i<a){ i++; continue;}
            if(j<b){ j++; continue;}
            c--; d--;counter--; i--;
            }
        else{
            if(i>c){ i--; continue;}
            if(j>d){ j--; continue;}
            a++; b++;counter++; i++;
        }
    }
    for(j=0;j<Height;j++){
        for(i=0;i<Width;i++) cout<<M[i][j]<<" ";
        cout<<endl;
    }
    system("pause");
    return 0;
}
Exeron
0 / 0 / 0
Регистрация: 14.08.2014
Сообщений: 11
14.08.2014, 19:37  [ТС]     Запись в матрицу по спирали (ввод чисел с клавиатуры) #4
там не количество строк 121 а символов в матрице столько должно быть. и если с клавиатуры введено не 121 символ все пустые ячейки заполняются нулями, а те которые вводили с клавиатуры записываются в матрицу по спирали из центра
Yandex
Объявления
14.08.2014, 19:37     Запись в матрицу по спирали (ввод чисел с клавиатуры)
Ответ Создать тему
Опции темы

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