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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2013, 11:26   #11
Студент8565
Пользователь
 
Регистрация: 11.05.2013
Сообщений: 12
По умолчанию

спасибо Вам огромное за помощь и терпение!=)
Студент8565 вне форума Ответить с цитированием
Старый 18.05.2013, 17:26   #12
Студент8565
Пользователь
 
Регистрация: 11.05.2013
Сообщений: 12
По умолчанию

извините, а можно еще пару вопросов?
почему в этой строчке 48?
Код:
Num = Num + (Convert.ToInt32(s[i]) - 48) * Base;
и можно вот это
Код:
string s2 = new string(s1.ToCharArray().Reverse().ToArray()); // записали строку в обратном порядке, используя LINQ
записать проще, без LINQ, я не знаю что это, и не смогу объяснить((
Студент8565 вне форума Ответить с цитированием
Старый 18.05.2013, 19:01   #13
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
почему в этой строчке 48?
Потому что 48 символ в ASCII таблице = 0.
Поэтому можно сказать, что Convert.ToInt32(s[i]) - 48 преобразует строковое значение в его числовое представление.

Последний раз редактировалось Poma][a; 18.05.2013 в 19:39.
Poma][a вне форума Ответить с цитированием
Старый 18.05.2013, 19:34   #14
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Правильнее будет вместо 48 написать ord('0').
s-andriano вне форума Ответить с цитированием
Старый 18.05.2013, 19:39   #15
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Правильнее будет вместо 48 написать ord('0').
Тогда уж Сonvert.ToByte('0')
Poma][a вне форума Ответить с цитированием
Старый 18.05.2013, 20:41   #16
Студент8565
Пользователь
 
Регистрация: 11.05.2013
Сообщений: 12
По умолчанию

спасибо, с этим моментом понятно. а что можете сказать насчет LINQ, чем его заменить?
Студент8565 вне форума Ответить с цитированием
Старый 18.05.2013, 21:27   #17
Студент8565
Пользователь
 
Регистрация: 11.05.2013
Сообщений: 12
По умолчанию

ответьте пожалуйста..
Студент8565 вне форума Ответить с цитированием
Старый 19.05.2013, 10:03   #18
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
Тогда уж Сonvert.ToByte('0')
Лично я недолюбливаю ord, поэтому в своих программах всегда пишу byte('0'). Согласитесь, "byte" намного изящнее, чем "Сonvert.ToByte".
Но я специально привел другую запись потому, что они не эквивалентны:
далеко не все кодировки являются однобайтовыми, а в случае многобайтовых кодировок, естественно, что byte, что Сonvert.ToByte будет давать одинаково неправильный результат.
Поэтому, все таки, ord. В число должен переводиться символ целиком, а не только его первый байт.

PS. Кстати, мне кажется, в С пройдет просто "- '0'" без явного приведения типов.

Последний раз редактировалось s-andriano; 19.05.2013 в 10:08.
s-andriano вне форума Ответить с цитированием
Старый 19.05.2013, 11:55   #19
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Согласитесь, "byte" намного изящнее, чем "Сonvert.ToByte".
Не знаю можно ли в C# использовать явное приведение типов.
Цитата:
естественно, что byte, что Сonvert.ToByte будет давать одинаково неправильный результат.
В нашем случаем мы получаем только число 48, которое влегкую влезает в Byte.

Цитата:
Лично я недолюбливаю ord
А если не секрет, почему?
Poma][a вне форума Ответить с цитированием
Старый 20.05.2013, 13:41   #20
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Студент8565 Посмотреть сообщение
и можно вот это
Код:
string s2 = new string(s1.ToCharArray().Reverse().ToArray()); // записали строку в обратном порядке, используя LINQ
записать проще, без LINQ, я не знаю что это, и не смогу объяснить((

Если бы Вы погуглили, легко нашли множество вариантов.

например, такой:
Код:
string s1 = "Hello";
char[] ar = s1.ToCharArray();
Array.Reverse(ar);
s1 = new String(ar);
или такой:
Код:
string s1 = "Hello, World.";
StringBuilder sb = new StringBuilder(text . Length);
for (int i = text . Length - 1; i >= 0; i--)
{
   sb.Append(text [ i ] );
}
или такой:
Код:
string s = "abcdef"; //Строка которую надо развернуть
string rev_s = ""; //Здесь будет храниться развернутая строка
for (int i = s.Length-1; i >= 0; i--) //Перебираем символы в строке s циклом в обратном порядке
{
    rev_s += s; //заполняем обратную строку символами в обратном порядке.
}
выбирайте любой, какой Вам понятнее/ближе!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С# Нахождение пары элементов с наименьшими отличиями друг от друга в массиве. GoldSieg Помощь студентам 6 18.02.2013 12:45
Номера столбцов в которых находиться более двух простых чисел andry-raser Общие вопросы C/C++ 1 19.12.2011 13:59
найти кол-во трехзначных чисел сумма простых делителей которых кратна 5 (на Делфи) anzorchik Помощь студентам 2 02.10.2011 16:18
Методом простых включений произвести сортировку (упорядочивание в порядке возрастания) массива из N действительных чисел СашаСаша Помощь студентам 1 04.07.2011 18:41
Перестановка чисел в массиве в обратном порядке Student117 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 22.10.2009 06:14