Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
blackster
2 / 2 / 1
Регистрация: 19.09.2011
Сообщений: 15
#1

Заполнить матрицу по образцу - C++

19.09.2011, 22:32. Просмотров 785. Ответов 11
Метки нет (Все метки)

Нужно создать матрицу и заполнить ее таким образом:

1 2 6 7 15 16 28 ...
3 5 8 14 17 27 ...
4 9 13 18 26 ...
10 12 19 25 ...
11 20 24 ...
21 23 ...
22 ...
.
.
.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.09.2011, 22:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Заполнить матрицу по образцу (C++):

Заполнить матрицу по образцу - C++
Нужно сделать такую матрицу: 1 2 3 2 1 2 3 2 1 Начало есть, но как дальше хз. Делать нужно через двухмерный массив, и штуки...

Заполнить матрицу по образцу - C++
Заполнить заснетоши массив следующим образом: 111 112 ... 120 ... ... ... ... 11 12 ... 20 1 2 ... 10

Заполнить матрицу по образцу - C++
Заполнить матрицу размером n*m числами 1,2,3, … n*m, оюходя её соответственно варианту:

Заполнить матрицу соответствии образцу - C++
Заполнить матрицу соответствии образце Чистый Си

Заполнить матрицу по заданному образцу - C++
Здравствуйте. Помогите пожалуйста с задачей, уже несколько дней сижу,ничего не получается. Задано число N(может быть четным или...

Заполнить матрицу соответственно образцу - C++
Заполнить матрицу соответственно образцу

11
sandye51
программист С++
685 / 587 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
19.09.2011, 22:59 #2
Цитата Сообщение от blackster Посмотреть сообщение
Нужно создать матрицу и заполнить ее таким образом
ну так приступай
0
blackster
2 / 2 / 1
Регистрация: 19.09.2011
Сообщений: 15
19.09.2011, 23:34  [ТС] #3
если бы я знал как ето сделать, то я бы здесь не писал
0
alkagolik
Заблокирован
20.09.2011, 03:04 #4
blackster, что-то мне эта последовательность напоминает не помню только что именно, но что-то из области арифметики точно.
0
IrineK
Заблокирован
20.09.2011, 05:08 #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
#include <iostream>
#include <iomanip>
#define N 10
 
using namespace std;
 
int main()
{
    int i,k, num=1, A[N][N];
    int numMax = N*N;
 
    //filling
    for(k=0;k<N;k++)
    {   if(k%2)
            for(i=0;i<k+1;i++)
            {   A[i][k-i] = num;
                A[N-1-i][N-1-k+i] = numMax+1-num;
                num++;
            }
        else
            for(i=k;i>-1;i--)
            {   A[i][k-i] = num;
                A[N-1-i][N-1-k+i] = numMax+1-num;
                num++;
            }
    }
    
    //showing
    for(i=0;i<N;i++)
    {   for(k=0;k<N;k++)
            cout<<setw(5)<<A[i][k];
        cout<<"\n";
    }
 
    cin.get();
    return 0;
 
}
2
Миниатюры
Заполнить матрицу по образцу  
-=ЮрА=-
Заблокирован
Автор FAQ
20.09.2011, 12:00 #6
Цитата Сообщение от blackster Посмотреть сообщение
Нужно создать матрицу и заполнить ее таким образом:
1 2 6 7 15 16 28 ...
3 5 8 14 17 27 ...
4 9 13 18 26 ...
10 12 19 25 ...
11 20 24 ...
21 23 ...
22 ...
.
.
.
- в каждой строке сдвиг элемента на 1 и добавление его в конец, сейчас накидаю

Добавлено через 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
38
39
40
41
42
43
44
45
46
47
48
49
#include <iostream>
#include <conio.h>
using namespace std;
 
//Руссификация
ostream& operator<<(ostream &stream,char* s){
    for(char* ps=s; *ps; ps++){
        if(*ps=='ё')
            stream<<char(241);
        else if(*ps=='Ё')
            stream<<char(240);
        else if(*ps>=-64 && *ps<=-17)           
            stream<<char(*ps+64+128);
        else if(*ps<0)
            stream<<char(*ps+64+176);
        else
            stream<<*ps;
    }
    return stream;
}
 
int main()
{
    int k,i,j,n;
    int ** arr;
    do
    {
        std::cout<<"Ведите размерность матрицы : ";
        std::cin>>n;
        arr = new int *[n];
        for(i = 0; i < n; i++)
        {
            arr[i] = new int[n];
            for(j = 0,k = i + 1; j < n; j++,k++)
            {
                if(k < n)
                    arr[i][j] = k;
                else
                    arr[i][j] = k - n + 1;
                std::cout<<arr[i][j]<<" ";
            }
            std::cout<<"\r\n";
        }
        std::cout<<"Нажмите Y для нового ввода\r\n";
        delete [] arr;
    }
    while(toupper(getch()) == 'Y');
    return 0;
}
Ведите размерность матрицы : 6
1 2 3 4 5 1
2 3 4 5 1 2
3 4 5 1 2 3
4 5 1 2 3 4
5 1 2 3 4 5
1 2 3 4 5 6
Нажмите Y для нового ввода

Добавлено через 2 минуты
PS:Если ниже побочной диагонали элементы не нужны то цикли имеет следующий виды
C++
1
2
3
4
5
6
7
8
9
10
11
12
for(i = 0; i < n; i++)
        {
            arr[i] = new int[n];
            for(j = 0,k = i + 1; j < n; j++,k++)
            {
                arr[i][j] = 0;
                if(k <= n)
                    arr[i][j] = k;
                std::cout<<arr[i][j]<<" ";
            }
            std::cout<<"\r\n";
        }
Ведите размерность матрицы : 6
1 2 3 4 5 6
2 3 4 5 6 0
3 4 5 6 0 0
4 5 6 0 0 0
5 6 0 0 0 0
6 0 0 0 0 0
Нажмите Y для нового ввода
0
sandye51
программист С++
685 / 587 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
20.09.2011, 12:03 #7
-=ЮрА=-, ты не то, что нужно сделал
0
-=ЮрА=-
Заблокирован
Автор FAQ
20.09.2011, 14:31 #8
Цитата Сообщение от sandye51 Посмотреть сообщение
-=ЮрА=-, ты не то, что нужно сделал
- всмотрелся, точно в строке переменный шаг, сейчас поправлюсь...

Добавлено через 2 часа 20 минут
Вобщем вот алгоритм на плюсах с переменным шагом по i и j
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include <iostream>
#include <conio.h>
using namespace std;
 
//Руссификация
ostream& operator<<(ostream &stream,char* s){
    for(char* ps=s; *ps; ps++){
        if(*ps=='ё')
            stream<<char(241);
        else if(*ps=='Ё')
            stream<<char(240);
        else if(*ps>=-64 && *ps<=-17)           
            stream<<char(*ps+64+128);
        else if(*ps<0)
            stream<<char(*ps+64+176);
        else
            stream<<*ps;
    }
    return stream;
}
 
//1 2 6 7 15 16 28 ... 
//3 5 8 14 17 27 ...
//4 9 13 18 26 ...
//10 12 19 25 ... 
//11 20 24 ...
//21 23 ...
//22 ...
 
void PrntVec(int n, int * vec);
void FillVec(int n, int base, int plus, int * vec);
 
int main()
{
    int i,j,n;
    int ** arr;
    int i_plus = 6, j_plus = 4;
    do
    {
        std::cout<<"Ведите размерность матрицы : ";
        std::cin>>n;
        arr    = new int *[n];
        arr[0] = new int[n];//Первая строка не вписывается в алгоритм 
        //переменного шага по i
        //Верней он со 2-й строки начинается
        FillVec(n, 1, j_plus, arr[0]);
        PrntVec(n, arr[0]);
        for(int i = 1, k = 3, nCount = 1; i < n; i++)
        {
            arr[i] = new int[n];
            FillVec(n, k, j_plus, arr[i]);
            PrntVec(n, arr[i]);
            if(i % 2 == 0)
                k += i_plus*(nCount++);
            else
                k++;
        }
        std::cout<<"Нажмите Y для нового ввода\r\n";
        delete [] arr;
    }
    while(toupper(getch()) == 'Y');
    return 0;
}
 
void PrntVec(int n, int * vec)
{
    for(int i = 0; i < n; i++)
        std::cout<<vec[i]<<" ";
    std::cout<<"\r\n";
}
 
void FillVec(int n, int base, int plus, int * vec)
{
    for(int i = 1, k = base, nCount = 1; i <= n; i++)
    {
        vec[i - 1] = k;
        if(i % 2 == 0)
            k += plus*(nCount++);
        else
            k++;
    }
}
Ведите размерность матрицы : 11
1 2 6 7 15 16 28 29 45 46 66
3 4 8 9 17 18 30 31 47 48 68
4 5 9 10 18 19 31 32 48 49 69
10 11 15 16 24 25 37 38 54 55 75
11 12 16 17 25 26 38 39 55 56 76
продолжение
23 24 28 29 37 38 50 51 67 68 88
24 25 29 30 38 39 51 52 68 69 89
42 43 47 48 56 57 69 70 86 87 107
43 44 48 49 57 58 70 71 87 88 108
67 68 72 73 81 82 94 95 111 112 132
68 69 73 74 82 83 95 96 112 113 133
Нажмите Y для нового ввода
0
alkagolik
Заблокирован
20.09.2011, 15:49 #9
-=ЮрА=-, не то. вот что нужно, автор напомнил бы что это... так и быстрее дело пошло бы.
2
Изображения
 
-=ЮрА=-
Заблокирован
Автор FAQ
20.09.2011, 16:09 #10
Теперь дошло, по змейке...
1
blackster
2 / 2 / 1
Регистрация: 19.09.2011
Сообщений: 15
20.09.2011, 20:53  [ТС] #11
Цитата Сообщение от alkagolik Посмотреть сообщение
-=ЮрА=-, не то. вот что нужно, автор напомнил бы что это... так и быстрее дело пошло бы.
alkagolik прав, то что нужно)

Добавлено через 11 минут
IrineK

СПАСИБО!)
0
Vedola
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 7
22.09.2011, 19:19 #12
Помогите пожалуйста..на С надо написать...

1.Дана прямоугольная матрица [m x n]. Заполнить матрицу случайными числами. На побочной диагонали разместить суммы элементов, которые лежат на той же строке и столбце.
2.Дано k литерных строк (эти строки сохраняются в массиве строк A). Каждая строка содержит латинские и русские буквы, цифры и все возможные разделители. Требуется:
1) Выделить из каждой строки и напечатать подстроки, заключенные в квадратные скобки
2) Среди выделенных подстрок найти подстроку, начинающуюся с наибольшего числа цифр
3) Удалить путем сдвига все русские буквы.
0
22.09.2011, 19:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.09.2011, 19:19
Привет! Вот еще темы с ответами:

Заполнить двумерный массив по приведенному образцу - C++
Write a program that creates an two dimensional array A with values 10 11 12 13 14 15 16 17 18 19 0 20 21 22 23 24 25 26 27 0 ...

Сформировать матрицу по образцу - C++
Всем привет. Напишите пожалуйста, программу чтобы получился массив как внизу. 0 0 0 1 0 0 1 2 0 1 2 2 1 2 2 2 Нужен весь...

Сформировать матрицу по образцу - C++
Здравствуйте. Каким образом можно решить задачу? Даны действительные числа а1,а2... Получить:

Построить матрицу по образцу - C++
помоги пожалуйста ,а то я совсем не разбираюсь


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

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

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