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

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

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.08.2016, 16:14   #1
Maray
Форумчанин
 
Регистрация: 03.01.2015
Сообщений: 160
Восклицание Размерность С#

Добрый день!

Помогите, пожалуйста. Написала подпрограмму, которая вычисляет размерность объекта. Объект подается в виде строки. Объект представляет собой матрицу 4х4.

Например, подается строка 0000011001100000

Значит объект:
0000
0110
0110
0000

Подпрограмма вычисляет, что объект 2х2


Или

Строка 1001111100000000

Объект:
1001
1111
0000
0000

Подпрограмма вычисляет, что объект 4х2

Проблема возникает с объектом такого типа:
0011
0110
0000
0000

Подпрограмма считает его как 2х2, а не как 3х2.

Помогите, пожалуйста

(S.Substring(j,1) считывает из строки по одному символу)

Код:
 public string Ras(string S)
        {
            int d, v, dm;
            bool f = true;
            d = 0; v = 0; dm = 0;
            for (int j = 0; j <= 15; j++)
            {
                if (S.Substring(j, 1) == "1")
                {
                    if (f == true)
                    {
                        v = v + 1;
                        f = false;
                    }
                    d = d + 1;
                }
                if ((j+1) % 4 == 0)
                {
                    if (d > dm)
                    {
                        dm = d;
                    }
                    d = 0;
                    f = true;
                }
            }
            S = dm + "x" + v;
            return S;
        }
Maray вне форума Ответить с цитированием
Старый 02.08.2016, 16:37   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

строки вполне себе массив символов.
вы могли делать просто
Код:
S[j]=='1'
но не важно, вот пример, функция универсальная, но параметры по умолчанию равны вашим.(по хорошему параметры я бы проверял)
Код:
        public string Ras(string S, int width = 4, int height = 4)
        {
            int left = width, right = -1, top = height, bottom = -1;
            for (int x = 0; x < width; x++)
            {
                for (int y = 0; y < height; y++)
                {
                    if (S[(y * height) + x] == '1')
                    {
                        left = Math.Min(left, x);
                        right = Math.Max(right, x);
                        top = Math.Min(top, y);
                        bottom = Math.Max(bottom, y);
                    }
                }
            }
            if (left == width)
                return "0x0";
            return (right - left + 1) + "x" + (bottom - top + 1);
        }
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.08.2016, 16:47   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
которая вычисляет размерность объекта
кстати, любопытно, а что, в вашем понимании, "размерность объекта"?

ну, например,
Объект:
0001
1101
0001
0001

какую имеет размерность (и почему)?


или, например,
Объект:
1000
0100
0010
0001

какую имеет размерность (и почему)?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.08.2016, 16:48   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ну грубо говоря это размер область которую занимает объект(считается что объект один)
оба случая 4x4
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.08.2016, 17:16   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
ну грубо говоря это размер область которую занимает объект(считается что объект один)
ага. понял.

тогда всё просто: нужно найти разницу между самой левой и самой правой единицами (размер по горизонтали) и разницу между самой верхней и самой нижней (размер по вертикали).
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пересылка данных, размерность операндов MrDenzo Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 18.05.2015 13:33
Как изменить размерность матрицы? (JAVA) Начинающий програм Помощь студентам 3 02.03.2014 13:18
Размерность физических величин Alex2391 Общие вопросы Delphi 9 11.02.2011 20:45
Размерность в битах... Masip Общие вопросы Delphi 3 11.05.2010 17:46
размерность матрицы wolf950 Общие вопросы Delphi 1 03.08.2009 22:42