Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
1 / 1 / 3
Регистрация: 27.11.2014
Сообщений: 263
1

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

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

Author24 — интернет-сервис помощи студентам
Помогите решить.
Матрицу 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.03.2015, 21:27
Ответы с готовыми решениями:

Заполнить матрицу по указанному правилу
Напишите программу, которая создает двухмерный массив и заполняет его по следующему принципу:...

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

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

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

9
105 / 105 / 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
1 / 1 / 3
Регистрация: 27.11.2014
Сообщений: 263
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
105 / 105 / 51
Регистрация: 11.04.2014
Сообщений: 160
04.03.2015, 22:21 4
Цитата Сообщение от 19boom96 Посмотреть сообщение
Leon_AD, это для visual studio ?
Это да, в VB написал, но писал еще в NetBeans, Dev C++ и некоторых других. Разницы как-то не наблюдал. Язык же один.
0
1 / 1 / 3
Регистрация: 27.11.2014
Сообщений: 263
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
594 / 462 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
23.03.2015, 20:14 6
чем помочь-то ?
0
1 / 1 / 3
Регистрация: 27.11.2014
Сообщений: 263
23.03.2015, 20:15  [ТС] 7
Dimension, решение вставить)
0
1 / 1 / 3
Регистрация: 27.11.2014
Сообщений: 263
01.04.2015, 21:08  [ТС] 8
Leon_AD,
формула int dist=(int)sqrt(double(k-i)*(k-i)+(j-l)*(j-l)); не катит... надо отдельно для i и j находить
0
105 / 105 / 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
1 / 1 / 3
Регистрация: 27.11.2014
Сообщений: 263
02.04.2015, 20:01  [ТС] 10
Leon_AD, я сам не могу понять препода. Он сказал что с квадратным корнем нельзя...
надо именно отдельно для i и j... я хз знает как... уже вторую неделю решаю...и никак....

Добавлено через 51 минуту
Leon_AD, и это понятно что двойки будут, так ведь присвоение идёт элементам массива...
надо как сделать так что ++1 каждый элемент в строке от элемента вправо и влево, да и так же эл.столбца вверх-вниз ++1...
0
02.04.2015, 20:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.04.2015, 20:01
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru