Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
19boom96
0 / 0 / 3
Регистрация: 27.11.2014
Сообщений: 181
Завершенные тесты: 1
#1

Матрицу A (m, n) заполнить по указанному правилу - C++

04.03.2015, 21:27. Просмотров 673. Ответов 9
Метки нет (Все метки)

Помогите решить.
Матрицу A (m, n) заполнить следующим образом. Для заданных k и l элемента akl присвоить значение 1; элементам, окружающих его - значение 2; элементам следующий круг окружения - значение 3 и т.д. до заполнения всей матрицы
нашёл на этом форуме код C++, но правда часть.
Кто нибудь поможет ?

C++
1
2
3
4
5
6
7
8
9
10
const int m=10;
const int n=10;
int l=5,k=3;
int A[m][n];
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
{
    int dist=(int)sqrt(double(k-i)*(k-i)+(j-l)*(j-l));
    A[i][j]=dist+1;
}
И почему заданы уже значения ?

Добавлено через 51 минуту
Или этот код преобразовать можно в С++ ?

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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication11
{
    class Program
    {
        static void Main(string[] args)
        {
            //заполнение нулями
            int[,] arr = new int[9, 9];
            for (int i = 0; i < arr.GetLength(0); i++)
                for (int j = 0; j < arr.GetLength(1); j++)
                    arr[i, j] =0;
            int k =6 , l =6;//уже введено
            int num = 2,n = 1;
            bool flag = true;//для выхода из цикла
            while (flag)
            {
                //заполнение 1,2,3 и.т.д
                for (int i = 0; i < arr.GetLength(0); i++)
                    for (int j = 0; j < arr.GetLength(1); j++)
                        if (i == k - n || i == k + n || j == l - n || j == l + n)
                            arr[i, j] = num;
                arr[k, l] = 1;
                n++;
                num++;
                //выход , если все заполнилось
                if (n == arr.GetLength(1))
                    flag = false;
            }
            //вывод массива
            for (int i = 0; i < arr.GetLength(0); i++, Console.WriteLine())
                for (int j = 0; j < arr.GetLength(1); j++)
                    Console.Write("{0,3} ",arr[i,j]);
            
            Console.ReadKey();
        } 
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.03.2015, 21:27
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Матрицу A (m, n) заполнить по указанному правилу (C++):

Заполнить матрицу по указанному правилу
Не могу дописать программу, где надо заполнить массив data 4x4 цифрой 7 и...

Заполнить двумерный массив по указанному правилу
Нужно заполнить двумерный массив размера 5×4 за правилом: 1 0 2 0 3 0 4 0 5 0...

Получить квадратную матрицу по указанному правилу
1 x...x^8 x^9 x 0...0 x^8 . . - ,середина заполняется нулями). . x^8 0...0...

Сформировать матрицу размером 10*19 по указанному правилу
Сформировать матрицу размером 10*19 по следующему правилу.В первой строке...

Построить целочисленную квадратную матрицу заданного порядка по указанному правилу
5. Построить целочисленную матрицу А(7;7) на побочной диагонали которой 1, над...

Написать функцию, которая заполняет квадратную матрицу числами по указанному правилу
Напишите функцию, которая заполняет квадратную матрицу числами по следующему...

9
Leon_AD
103 / 103 / 51
Регистрация: 11.04.2014
Сообщений: 160
04.03.2015, 21:30 #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
#include <iostream> 
using namespace std;
 
int main()
{   
    setlocale(0, "rus");
    const int m=10;
    const int n=10;
    int k,l;
    int A[m][n];
    cout << "Enter k,l: ";
    cin >> k >> l;
    for(int i=0;i<m;i++)
        for(int j=0;j<n;j++)
        {
            int dist=(int)sqrt(double(k-i)*(k-i)+(j-l)*(j-l));
            A[i][j]=dist+1;
        }
    for(int i=0;i<m;i++)
    {
        for(int j=0;j<n;j++)
            cout << A[i][j] << '\t';
        cout << endl;
    }
    system("pause");
    return 0;
}
Как-то так.
0
19boom96
0 / 0 / 3
Регистрация: 27.11.2014
Сообщений: 181
Завершенные тесты: 1
04.03.2015, 22:14  [ТС] #3
Leon_AD, это для visual studio ?

Добавлено через 7 минут
Вот отредактировал для Borland C++
Но за правильности как тоне ручаюсь

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
#include <iostream.h>
#include <math.h>
#include <conio.h>
       main()
{
    const int m=10;
    const int n=10;
    int k,l;
    int A[m][n];
    cout << "Enter k: ";
    cin >> k;
    cout << "Enter l: ";
    cin >> l;
 
        for(int i=0;i<m;i++)
        for(int j=0;j<n;j++)
 
        {
 
            int dist=(int)sqrt(double(k-i)*(k-i)+(j-l)*(j-l));
            A[i][j]=dist++;
        }
          for(int i=0;i<m;i++)
    {
        for(int j=0;j<n;j++)            
            cout << A[i][j] << '\t';
        cout << endl;
    }
 
    getch();
    return 0;
}
0
Leon_AD
103 / 103 / 51
Регистрация: 11.04.2014
Сообщений: 160
04.03.2015, 22:21 #4
Цитата Сообщение от 19boom96 Посмотреть сообщение
Leon_AD, это для visual studio ?
Это да, в VB написал, но писал еще в NetBeans, Dev C++ и некоторых других. Разницы как-то не наблюдал. Язык же один.
0
19boom96
0 / 0 / 3
Регистрация: 27.11.2014
Сообщений: 181
Завершенные тесты: 1
23.03.2015, 20:11  [ТС] #5
Матрицу A (m, n) заполнить следующим образом. Для заданных k и l элемента akl присвоить значение 1; элементам, окружающих его - значение 2; элементам следующий круг окружения - значение 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
#include <iostream.h>
#include <math.h>
#include <conio.h>
       main()
{
    const int m=10;
    const int n=10;
    int k,l;
    int A[m][n];
    cout << "Enter k: ";
    cin >> k;
    cout << "Enter l: ";
    cin >> l;
 
        for(int i=0;i<m;i++)
        for(int j=0;j<n;j++)
 
        {
 
            int dist=(int)sqrt(double(k-i)*(k-i)+(j-l)*(j-l));
            A[i][j]=dist++;
        }
          for(int i=0;i<m;i++)
    {
        for(int j=0;j<n;j++)            
            cout << A[i][j] << '\t';
        cout << endl;
    }
 
    getch();
    return 0;
А вот решение которое надо использовать:
Aij=1
Ai-1*j-i=Ai-1*j=Ai-1*j+1=2
Ai*j-1=Ai*j+1=2
ai+1*j-1=Ai+1*j=Ai+1*j+1=2
cin i=
j=

for ( i++)
for ( j++)

if else
0
Dimension
Dimension
573 / 442 / 221
Регистрация: 08.04.2014
Сообщений: 1,709
Завершенные тесты: 1
23.03.2015, 20:14 #6
чем помочь-то ?
0
19boom96
0 / 0 / 3
Регистрация: 27.11.2014
Сообщений: 181
Завершенные тесты: 1
23.03.2015, 20:15  [ТС] #7
Dimension, решение вставить)
0
19boom96
0 / 0 / 3
Регистрация: 27.11.2014
Сообщений: 181
Завершенные тесты: 1
01.04.2015, 21:08  [ТС] #8
Leon_AD,
формула int dist=(int)sqrt(double(k-i)*(k-i)+(j-l)*(j-l)); не катит... надо отдельно для i и j находить
0
Leon_AD
103 / 103 / 51
Регистрация: 11.04.2014
Сообщений: 160
01.04.2015, 21:56 #9
Цитата Сообщение от 19boom96 Посмотреть сообщение
надо отдельно для i и j находить
Что значит отдельно, можно с этого места поподробнее?
Вы так хотите что ли?
C++
1
2
    A[i][j]=1;
    A[i-1][j-i]=A[i-1][j]=A[i-1][j+1] = A[i][j-1]=A[i][j+1] = A[i+1][j-1]=A[i+1][j]=A[i+1][j+1]=2;
Дак тогда в матрице одни двойки и будут.
0
19boom96
0 / 0 / 3
Регистрация: 27.11.2014
Сообщений: 181
Завершенные тесты: 1
02.04.2015, 20:01  [ТС] #10
Leon_AD, я сам не могу понять препода. Он сказал что с квадратным корнем нельзя...
надо именно отдельно для i и j... я хз знает как... уже вторую неделю решаю...и никак....

Добавлено через 51 минуту
Leon_AD, и это понятно что двойки будут, так ведь присвоение идёт элементам массива...
надо как сделать так что ++1 каждый элемент в строке от элемента вправо и влево, да и так же эл.столбца вверх-вниз ++1...
0
02.04.2015, 20:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2015, 20:01
Привет! Вот еще темы с решениями:

Заполнить матрицу по правилу
Матрицу K(m, n) заполнить следующим образом. Элементам, находящимся на...

Заполнить матрицу по правилу
Матрицу A (m, n) заполнить следующим образом. Для заданных k и l элемента akl...

Заполнить матрицу по правилу
Привет!помогите составить программу,которая заполнит массив А как показано...

Заполнить матрицу по правилу
помогите пожалуйста заполнить массив(NxM) последовательными числами от 1 до...


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

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

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