Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.04.2015, 21:24   #1
boom996
Новичок
Джуниор
 
Регистрация: 06.04.2015
Сообщений: 2
По умолчанию массив

Помогите решить.
Матрицу A (m, n) заполнить следующим образом. Для заданных k и l элемента akl присвоить значение 1; элементам, окружающих его - значение 2; элементам следующий круг окружения - значение 3 и т.д. до заполнения всей матрицы
нашёл на этом форуме код C++, но правда часть.
Кто нибудь поможет ?
Код:
#include <iostream.h>
#include <math.h>
#include <conio.h>
main()
{
 
    const int m=5;
    const int n=5;
    int k,l;
    int A[5][5];
 
    cout << "Vvedite stroky k";
    cin >> k;
    cout << "Vvedite stolbec l";
    cin >> l;
        for(int i=1;i<m;i++)
        for(int j=1;j<n;j++)
 
           {
           A[k][l]=0;
           A[i][j]=4;
           A[k-1][l-1]=A[k-1][l]=A[k-1][l+1]=1;
           A[k+1][l+1]=A[k+1][l]=A[k+1][l-1]=1;
           A[k][l+1]=A[k][l-1]=1;
           A[k-1][l+2]=A[k-2][l+1]=A[k-2][l-1]=A[k-2][l-2]=A[k-2][l]=A[k-2][l+2]=2;
           A[k+1][l+2]=A[k+2][l+1]=A[k+2][l-1]=A[k+2][l-2]=A[k+2][l]=A[k+2][l+2]=2;
           A[k][l+2]=A[k][l-2]=A[k-1][l-2]=A[k+1][l-2]=2;
           A[k-3][l+3]=A[k-3][l+3]=A[k-3][l-3]=A[k-3][l-3]=A[k-3][l]=A[k-3][l+3]=3;
           A[k-3][l+2]=A[k-3][l+1]=A[k-3][l-2]=A[k-3][l-1]=A[k-3][l]=A[k-3][l+3]=3;
           A[k+3][l+2]=A[k+3][l+1]=A[k+3][l-2]=A[k+3][l-1]=A[k+3][l]=A[k+3][l+3]=3;
           A[k+3][l+3]=A[k+3][l+3]=A[k+3][l-3]=A[k+3][l-3]=A[k+3][l]=A[k+3][l+3]=3;
           A[k][l+3]=A[k][l-3]=A[k-3][l-3]=A[k-2][l-3]=A[k-1][l+3]=A[k+2][l+3]=3;
           A[k+1][l+3]=A[k-2][l+3]=3;
           A[k-1][l-3]=A[k+1][l-3]=A[k-2][l-3]=A[k+2][l-3]=3;
           }
 
 
                      for(int i=1;i<m;i++)
                  {
                    for(int j=1;j<n;j++)
                    cout << A[i][j] << '\t';
                    cout << endl;
                  }
    getch ();
    return 0;
}
Знаю что этот код пздц... но всё же

Последний раз редактировалось Stilet; 06.04.2015 в 21:41.
boom996 вне форума Ответить с цитированием
Старый 06.04.2015, 23:26   #2
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

попробуй это вместо твоего первого "большого" цикла

Код:
for(int i=1;i<m;i++)
  for(int j=1;j<n;j++){
    if (abs(i - l) == abs(j - k))
      A[i,j] = abs (j - k) + 1;
    }
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 07.04.2015, 07:20   #3
boom996
Новичок
Джуниор
 
Регистрация: 06.04.2015
Сообщений: 2
По умолчанию

Цитата:
Сообщение от VIK_aka_TOR Посмотреть сообщение
попробуй это вместо твоего первого "большого" цикла

Код:
for(int i=1;i<m;i++)
  for(int j=1;j<n;j++){
    if (abs(i - l) == abs(j - k))
      A[i,j] = abs (j - k) + 1;
    }

этот не катит... он столбцы расчитывает
а мне надо окаймление элемента
boom996 вне форума Ответить с цитированием
Старый 07.04.2015, 08:53   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Самое простенькое что можно накидать побыстрячку:
Код:
// ttt.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"

const int w=10,h=10;
	int a[h][w]={0};

void filler(int x,int y,int l,int n){
 int i,j;
 for(i=y-l,j=x-l; (i>=0 && i<h) && (j>=0 && j<w) && (j<=x+l);j++) a[i][j]=n;
 for(i=y+l,j=x-l; (i>=0 && i<h) && (j>=0 && j<w) && (j<=x+l);j++) a[i][j]=n;
 for(i=y-l,j=x-l; (i>=0 && i<h) && (j>=0 && j<w) && (i<=y+l);i++) a[i][j]=n;
 for(i=y-l,j=x+l; (i>=0 && i<h) && (j>=0 && j<w) && (i<=y+l);i++) a[i][j]=n;
}

int _tmain(int argc, _TCHAR* argv[])
{
	for(int i=1;i<w;i++) filler(3,3,i,i);
	for(int i=0;i<h;i++){
		for(int j=0;j<w;j++) printf("%5d",a[i][j]);
		printf("\n");
	}
	getchar();
	return 0;
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.04.2015, 14:10   #5
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

каюсь, недосмотрел немного
Код:
#include <iostream>
using namespace std;

int abs(int a){
    if (a < 0)
        return -a;
    else
        return a;
    
}

int main()
{
 
    const int m=5;
    const int n=5;
    int k,l;
    int A[5][5];
 
    cout << "Vvedite stroky k";
    cin>>k;
    cout << "Vvedite stolbec l";
    cin>>l;
    cout<<'\n';
    
    for(int i=0;i<m;i++)
        for(int j=0;j<n;j++){
            if (abs(i - k) > abs(j - l))
            	A[i][j] = abs(i - k) + 1;
            else
            	A[i][j] = abs(j - l) + 1;	
            }
 
 
    for(int i=0;i<m;i++){
        for(int j=0;j<n;j++)
            cout << A[i][j] << '\t';
        cout << '\n';
        }
    return 0;
}
работает

p.s. в С++ индексы циклов начинаются с нуля
пишу код не только за печеньки

Последний раз редактировалось VIK_aka_TOR; 07.04.2015 в 14:13.
VIK_aka_TOR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан одномерный массив, сформировать новый массив по заданному правилу {Delphi} Nickolai47 Помощь студентам 5 16.12.2012 14:51
С# задан массив 5х5. сформировать массивы А и В. в массив А поместить элементы с четными индексами, в массив В с нечетны Koksa Помощь студентам 0 10.10.2011 11:26
Запись координат в массив в реал тайм, Как записать координаты в массив Dark19 Visual C++ 2 21.06.2011 18:45
Из массив А получить массив В, удвоив все нечётные элементы удвоены ( на Pascal) KARTER Помощь студентам 1 18.06.2011 19:58