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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2010, 19:53   #1
Pti44ka
Пользователь
 
Аватар для Pti44ka
 
Регистрация: 02.09.2009
Сообщений: 56
По умолчанию открытие файла

Посдкажите, пожалуйста,что значит следующий код?
for (i = 0; i < VERTEX_COUNT; i++)
{
String tmpstr = STREAM_READER.ReadLine();
for (j = 0; j < VERTEX_COUNT; j++)
{
GRAPH_MATRIX[i, j] = Convert.ToInt16(tmpstr[j])-48;
}
}
VERTEX_COUNT- количество вершин в графе, GRAPH_MATRIX[i, j]- матрица смежности. Код используется для откытия файлы из системы файлов. Просто непонятна следующая строка:

GRAPH_MATRIX[i, j] = Convert.ToInt16(tmpstr[j])-48;
Pti44ka вне форума Ответить с цитированием
Старый 09.05.2010, 22:23   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Ну строка содержит видимо ряд чисел. Посимвольно выудивается символ (переводится в int) и вычитается 48. Явно выходит отрицательное число. Вроде так.
BOBAH13 вне форума Ответить с цитированием
Старый 09.05.2010, 22:47   #3
Pti44ka
Пользователь
 
Аватар для Pti44ka
 
Регистрация: 02.09.2009
Сообщений: 56
По умолчанию

Цитата:
Сообщение от BOBAH13 Посмотреть сообщение
Ну строка содержит видимо ряд чисел. Посимвольно выудивается символ (переводится в int) и вычитается 48. Явно выходит отрицательное число. Вроде так.
А почему именно 48, а не 50?
Pti44ka вне форума Ответить с цитированием
Старый 10.05.2010, 03:04   #4
Pti44ka
Пользователь
 
Аватар для Pti44ka
 
Регистрация: 02.09.2009
Сообщений: 56
По умолчанию

И еще возник вопрос: почему там получается отрицательное число?
Pti44ka вне форума Ответить с цитированием
Старый 10.05.2010, 07:38   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Код чтения очень плохой (и крайне ненаглядный и защиты от неверных данных никакой нет ;( )!
И тут явно использован хакерские методы программирования!

1) в строке записаны не числа - а ЦИФРЫ (именно цифры, подряд, без пробелов и их ровно VERTEX_COUNT (можно больше - остальные будут проигнорированы, главное, НЕ МЕНЬШЕ!).

2) чтобы перевести символьное представление цифры в значение используется следущий трюк:
значение символа переводится в числовое предствление получается код символа по таблице символов. например, для символа '5' это будет 53
чтобы получить значение символа от него отнимается значение кода символа нуля:
код_символа('5') - код_символа('0')
легко увидеть по той же таблице символов, что код символа '0' равен 48 (вот откуда взялось магическое число 48 !)
получаем Ваш код:
очередной элемент матрицы = код_символа('5') - 48;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 10.05.2010, 10:17   #6
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Код:
Convert.ToInt16('5')
Честно говоря, поражает почему равно 53, а не 5. видимо это команда должна была называться типа ToAsc.
BOBAH13 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
открытие файла vo_sa Общие вопросы C/C++ 7 25.06.2009 11:23
Открытие файла и создание графика на основе чисел из файла Simon..14 Общие вопросы C/C++ 8 09.06.2009 10:18
Открытие файла Messir_Leonard Win Api 2 09.04.2008 19:33
Открытие файла KillbrumX Помощь студентам 5 02.02.2008 20:50
Открытие файла Lexakazanskij Паскаль, Turbo Pascal, PascalABC.NET 9 01.11.2007 22:27