1 / 1 / 0
Регистрация: 17.05.2011
Сообщений: 134
1

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

22.02.2012, 10:37. Показов 1157. Ответов 4
Метки нет (Все метки)

Заполнить матрицу размером n*m числами 1,2,3, … n*m, оюходя её соответственно варианту:
Вложения
Тип файла: docx задание.docx (17.2 Кб, 11 просмотров)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.02.2012, 10:37
Ответы с готовыми решениями:

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

Заполнить матрицу по образцу
Нужно создать матрицу и заполнить ее таким образом: 1 2 6 7 15 16 28 ... 3 5 8 14...

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

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

4
182 / 183 / 55
Регистрация: 08.04.2009
Сообщений: 1,309
22.02.2012, 11:35 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
#include <iostream>
using namespace std;
 
const int n = 5, m = 4;
 
int main()
{
    int mas[n][m];
    int k = 1, l=0;
    for(int i=0;i<n;i++)
    {
    
            if(l%2==0){for(int j=0;j<m;j++){mas[i][j] = k;k++;}}
                    
            else {for(int j=m-1;j>=0;j--){mas[i][j] = k;k++;}}
              
            l++;      
     }
    
    
    for(int i=0;i<n;i++)
    {
            for(int j=0;j<m;j++)
            {
                    cout << mas[i][j]  << "  ";
            }
            cout << "\n";
    }
    
    cin.get();
}
0
Заблокирован
Автор FAQ
22.02.2012, 11:36 3
Цитата Сообщение от metalist1925 Посмотреть сообщение
Заполнить матрицу размером n*m числами 1,2,3, … n*m, оюходя её соответственно варианту:
Вложения
задание.docx (17.2 Кб, 1 просмотров)
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
#include <stdio.h>//printf, scanf
#include <stdlib.h>//malloc, free, system
 
//ðåêîìåíäóþ ñðàçó ïèñàòü ôóíêöèþ ÷èñòè ïàìÿòè
void freeArr(int ** arr, int nRows)
{
    if(arr)
    {
        while(0 < nRows)
        {
            if(arr[nRows - 1])
                free(arr[(nRows - 1)]);//Âîò òàê ÷èñòèì ïàìÿòü îòâåäåííóþ ïîä ñòðîêó
            nRows = nRows - 1;
        }
    }
    arr = NULL;
}
 
int main()
{
    system("chcp 1251");//Ïðîñòàÿ ðóññèôèêàöèÿ ìîæíî è ÷åðåç locale
    int nRows;//Áóäåò ñîäåðæàòü â ñåáå ÷èñëî ñòðîê íàøåé ìàòðèöû
    int nCols;//Áóäåò ñîäåðæàòü â ñåáå ÷èñëî ñòîëáöîâ íàøåé ìàòðèöû
    int **arr;//Óêàçàòåëü íà íàøó ìàòðèöó
    int i,j,k;
    printf("Ââåäèòå ÷èñëî ñòðîê â ìàòðèöå    : ");scanf("%d",&nRows);
    printf("Ââåäèòå ÷èñëî ñòîëáöîâ â ìàòðèöå : ");scanf("%d",&nCols);
    //Òåïåðü ïðîáóåì âûäåëèòü ïàìÿòü ïîä óêàçàòåëè íà ñòðîêè ìàòðèöû
    //â çàïèñè íèæå âñ¸ âàæíî îñîáåííî ðàçìåð âûäåëÿåìîãî áëîêà nRows*sizeof(int *)!
    //Òàêæå ðåêîìåíäóþ âñåãäà ïðîâåðÿòü à âûäåëèëàñü ëè ïàìÿòü
    if(!(arr = (int **)malloc(nRows*sizeof(int *))))
        printf("Îøèáêà âûäåëåíèÿ ïàìÿòè ïîä óêàçàòåëè íà ñòðîêè\n");
    else
    {
        for(i = 0,k = 1; i < nRows; i++)
        {
            //Òåïåðü ïðîáóåì âûäåëÿòü ïàìÿòü ïîä ýëåìåíòû i-îé ñòðîêè
            //Îáðàùó âíèìàíèÿ ÷òî äëÿ óêàçàòåëåé íà ñòðîêè ðçìåð áëîêà
            //áûë nRows*sizeof(int *) äëÿ ýëåìåíòîâ æå ñòðîêè nCols*sizeof(int)!
            if(!(arr[i] = (int *)malloc(nCols*sizeof(int))))
            {
                printf("Îøèáêà âûäåëåíèÿ ïàìÿòè ïîä ýëåìåíòû ñòðîêè\n");
                break;//Ñðàçó æå ïðåêðàùàåì ãåíåðàöèþ
            }
            else//Åñëè æå âñ¸ îê èíèöèàëèçèðóåì ýëåìåíòû ìàòðèöû 
            {
                for(j = 0; j < nCols; j++, k++)
                {
                    if(i % 2 == 0)
                        arr[i][j] = k;
                    else
                        arr[i][nCols - j - 1] = k;
                }
                //Ïå÷àòàåì ýëåìåíòû ìàòðèöû íà ýêðàí
                for(j = 0; j < nCols; j++)
                    printf("%02d ",arr[i][j]);
            }
            printf("\n");
        }
    }
    //Åñëè âñ¸ ñäåëàëè ïðàâèëüíî ó íàñ íà ýêðàíå íàøà ìàòðèöà
    system("pause");//ñòîï-òî÷êà ïåðåä âûõîäîì
    freeArr(arr, nRows);//÷èñòèì ïàìÿòü ïåðåä çàâåðøåíèåì ïðîãðàììû
    return 0;
}
Миниатюры
Заполнить матрицу по образцу  
Изображения
 
0
-=ЮрА=-
22.02.2012, 11:41
  #4

Не по теме:

Цитата Сообщение от vet Посмотреть сообщение
if(l%2==0){for(int j=0;j<m;j++){mas[i][j] = k;k++;}}
else {for(int j=m-1;j>=0;j--){mas[i][j] = k;k++;}}
- вводить два цикла, если можно обойтись простой индексацией:

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
if(i % 2 == 0)
arr[i][j] = k;
else
arr[i][nCols - j - 1] = k;
По моему крайне нерационально...

0
Заблокирован
Автор FAQ
22.02.2012, 11:55 5
Если интересуют плюсы вот переработанный код из 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
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
#include <iostream>
#include <iomanip>
using namespace std;
 
//ðåêîìåíäóþ ñðàçó ïèñàòü ôóíêöèþ ÷èñòè ïàìÿòè
void freeArr(int ** arr, int nRows)
{
    if(arr)
    {
        while(0 < nRows)
        {
            if(arr[nRows - 1])
                delete [] (arr[(nRows - 1)]);//Âîò òàê ÷èñòèì ïàìÿòü îòâåäåííóþ ïîä ñòðîêó
            nRows = nRows - 1;
        }
    }
    arr = NULL;
}
 
int main()
{
    system("chcp 1251");//Ïðîñòàÿ ðóññèôèêàöèÿ ìîæíî è ÷åðåç locale
    int nRows;//Áóäåò ñîäåðæàòü â ñåáå ÷èñëî ñòðîê íàøåé ìàòðèöû
    int nCols;//Áóäåò ñîäåðæàòü â ñåáå ÷èñëî ñòîëáöîâ íàøåé ìàòðèöû
    int **arr;//Óêàçàòåëü íà íàøó ìàòðèöó
    int i,j,k;
    cout<<"Ââåäèòå ÷èñëî ñòðîê â ìàòðèöå    : ";cin>>nRows;
    cout<<"Ââåäèòå ÷èñëî ñòîëáöîâ â ìàòðèöå : ";cin>>nCols;
    //Òåïåðü ïðîáóåì âûäåëèòü ïàìÿòü ïîä óêàçàòåëè íà ñòðîêè ìàòðèöû
    //Òàêæå ðåêîìåíäóþ âñåãäà ïðîâåðÿòü à âûäåëèëàñü ëè ïàìÿòü
    if(!(arr = new int *[nRows]))
        cout<<"Îøèáêà âûäåëåíèÿ ïàìÿòè ïîä óêàçàòåëè íà ñòðîêè\n";
    else
    {
        for(i = 0,k = 1; i < nRows; i++)
        {
            //Òåïåðü ïðîáóåì âûäåëÿòü ïàìÿòü ïîä ýëåìåíòû i-îé ñòðîêè
            if(!(arr[i] = new int[nCols]))
            {
                cout<<"Îøèáêà âûäåëåíèÿ ïàìÿòè ïîä ýëåìåíòû ñòðîêè\n";
                break;//Ñðàçó æå ïðåêðàùàåì ãåíåðàöèþ
            }
            else//Åñëè æå âñ¸ îê èíèöèàëèçèðóåì ýëåìåíòû ìàòðèöû 
            {
                for(j = 0; j < nCols; j++, k++)
                        arr[i][((i % 2) ? nCols - j - 1 : j)] = k;
                //Ïå÷àòàåì ýëåìåíòû ìàòðèöû íà ýêðàí
                for(j = 0; j < nCols; j++)
                    cout<<setw(3)<<arr[i][j];
            }
            cout<<endl;
        }
    }
    //Åñëè âñ¸ ñäåëàëè ïðàâèëüíî ó íàñ íà ýêðàíå íàøà ìàòðèöà
    system("pause");//ñòîï-òî÷êà ïåðåä âûõîäîì
    freeArr(arr, nRows);//÷èñòèì ïàìÿòü ïåðåä çàâåðøåíèåì ïðîãðàììû
    return 0;
}
Миниатюры
Заполнить матрицу по образцу  
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.02.2012, 11:55
Помогаю со студенческими работами здесь

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

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

Заполнить массив по указанному образцу
Дан массив А размером n x m. Помогите переделать код так,чтобы он выглядел следующим образом:...

Заполнить двумерный массив по приведенному образцу
Write a program that creates an two dimensional array A with values 10 11 12 13 14 15 16 17 18 19...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru