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

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

04.03.2015, 21:27. Просмотров 740. Ответов 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
Ответы с готовыми решениями:

Заполнить матрицу по указанному правилу
Не могу дописать программу, где надо заполнить массив 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
Сообщений: 198
Завершенные тесты: 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
Сообщений: 198
Завершенные тесты: 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
574 / 444 / 221
Регистрация: 08.04.2014
Сообщений: 1,709
Завершенные тесты: 1
23.03.2015, 20:14 6
чем помочь-то ?
0
19boom96
0 / 0 / 3
Регистрация: 27.11.2014
Сообщений: 198
Завершенные тесты: 1
23.03.2015, 20:15  [ТС] 7
Dimension, решение вставить)
0
19boom96
0 / 0 / 3
Регистрация: 27.11.2014
Сообщений: 198
Завершенные тесты: 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
Сообщений: 198
Завершенные тесты: 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...


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

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

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