|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
09.05.2010, 19:53 | #1 |
Пользователь
Регистрация: 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; |
09.05.2010, 22:23 | #2 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
Ну строка содержит видимо ряд чисел. Посимвольно выудивается символ (переводится в int) и вычитается 48. Явно выходит отрицательное число. Вроде так.
|
09.05.2010, 22:47 | #3 |
Пользователь
Регистрация: 02.09.2009
Сообщений: 56
|
|
10.05.2010, 03:04 | #4 |
Пользователь
Регистрация: 02.09.2009
Сообщений: 56
|
И еще возник вопрос: почему там получается отрицательное число?
|
10.05.2010, 07:38 | #5 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Код чтения очень плохой (и крайне ненаглядный и защиты от неверных данных никакой нет ;( )!
И тут явно использован хакерские методы программирования! 1) в строке записаны не числа - а ЦИФРЫ (именно цифры, подряд, без пробелов и их ровно VERTEX_COUNT (можно больше - остальные будут проигнорированы, главное, НЕ МЕНЬШЕ!). 2) чтобы перевести символьное представление цифры в значение используется следущий трюк: значение символа переводится в числовое предствление получается код символа по таблице символов. например, для символа '5' это будет 53 чтобы получить значение символа от него отнимается значение кода символа нуля: код_символа('5') - код_символа('0') легко увидеть по той же таблице символов, что код символа '0' равен 48 (вот откуда взялось магическое число 48 !) получаем Ваш код: очередной элемент матрицы = код_символа('5') - 48; |
10.05.2010, 10:17 | #6 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
Код:
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
открытие файла | 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 |