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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.10.2015, 12:35   #1
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию Как дополнить один из элементов массива нулями

Имеется строка А, где количество символов заранее неизвестно, может быть менее 56.25*4, а может быть и более этого значения.
Код:
            A = richTextBox1.Text;      //Исходное сообщение
            int i = 0;
            foreach (char x1 in A)
            {
                B[nSymbol-1] += x1;     //Выбираем по 56.25*4 символов = 1800 бит
                i++;
                if (i == 56.25*4) { i = 0; nSymbol++; }
            }
nSymbol обозначает количество строчек в массиве строк B, в которые будут записаны значения массива А. Код работает шикарно, но если в каком-то элементе строкового массива B число символов меньше 56.25*4, то он так и получается по размерности, например, 56 символов. Мне надо , чтобы обязательно в каждом элементе было 56.25*4, то есть остаток строки заполнить нулями.
Как это оптимальнее всего сделать? Я бы начал громоздить переменные для подсчета символов в цикле foreach и дополнительные циклы, поэтому решил задать вопрос вам.
Krasi вне форума Ответить с цитированием
Старый 19.10.2015, 16:09   #2
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

memset(&B, 0, 56.25*4);
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума Ответить с цитированием
Старый 19.10.2015, 16:35   #3
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

А, мне надо именно на C#
Krasi вне форума Ответить с цитированием
Старый 19.10.2015, 19:06   #4
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,876
По умолчанию

Код:
string s = new String((char)0, 56);
Таким образом я создаю строки заранее нужной длины (писал по памяти). Не совсем понятно о чём Вы говорите, используя понятие дробной части символа.
phomm вне форума Ответить с цитированием
Старый 19.10.2015, 19:28   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Ага, тоже интересно о 56.25*4. Просто 225 символов не катит, обязательно изврат?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 20.10.2015, 09:26   #6
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Обязательно 225! Прямо уже получил все графики, но не могу дальше пойти, потому что мне нужно, чтобы 225 в бинарном виде (1800) делилось на 3, если будет хотя бы 1799, то надо дополнить нулем, иначе ошибка деления на 3.

Еще раз скажу, что код в моем первом сообщении полностью рабочий. Мне именно эта функция и нужна. Только заметьте, если в строке А 225+225+135 символов, то в массиве B так и будет 3 строки 225, 225, 135 символов длиной, соответственно. Мне просто надо дополнить эти 135 символов нулями до 255 символов.

Причем, рассмотрим второй случай. В массиве а всего лишь 135 символов, то есть даже меньше, чем 225. Тогда надо дополнить их до 225 и просто остановить вычисление, то есть если в массиве B есть пустые строки, они так и останутся пустыми, а полезная длина B будет равна тогда 1, то есть это будет 1 строка, а не 3, как в предыдущем примере, длиной 225 символов, где 135 - информация массива А, а остальные - нули.

Последний раз редактировалось Krasi; 20.10.2015 в 09:32.
Krasi вне форума Ответить с цитированием
Старый 20.10.2015, 09:33   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от Krasi
Обязательно 225! Прямо уже получил все графики, но не могу дальше пойти, потому что мне нужно, чтобы 225 в бинарном виде (1800) делилось на 3, если будет хотя бы 1799, то надо дополнить нулем, иначе ошибка деления на 3.
Не знаю что вы хотели сказать этим, но вопрос был "в чем тайный смысл странного выражения 56.25*4 и почему не написать просто 225"?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 20.10.2015, 10:16   #8
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Можно писать просто 225. Норм. Ну я что-то вот сижу, извращаюсь, а у меня пока не получается. думал вот так уже сделать, чтобы не мучиться, но где-то ошибся пока

Код:
A = richTextBox1.Text;      //Исходное сообщение
            int i = 0;
            foreach (char x1 in A)
            {
                B[nSymbol - 1] += x1;     //Выбираем по 56.25*4 символов = 1800 бит
                i++;
                if (i == 56.25 * 4) { i = 0; nSymbol++; }
            }

            for (i = 0; i<=nSymbol; i++)
            { if (B[i].Length < 225 & B[i].Length > 0)
            { for (int i1 = 1; i1 < B[i].Length; i1++) B[i] += "0"; }
            }
Krasi вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как один из элементов массива значений обрамить в скобки. solnce60 Microsoft Office Excel 6 12.04.2013 16:04
Замена нулями элементов с четной суммой индексов Alex_Mason Помощь студентам 4 25.04.2012 00:04
Как обнулить элементы строки двумерного массива, содержащей наибольшее количество элементов одномерного массива griignat Помощь студентам 1 22.11.2011 20:04
Вставка нулей в массив. Сумма элементов между нулями. Язык С++ annka93 Помощь студентам 1 30.10.2011 19:50
Как объединить два массива в один. TheWanderer Общие вопросы C/C++ 2 10.11.2008 00:15