1. Структура заданного исходного файла и структуры данных, соответствующие данным файла
Файл – это последовательность байтов, хранящаяся в памяти.
Текстовый файл – это так же последовательность байтов, но каждый байт текстового файла можно представить кодом символа.
Заданный исходный файл – текстовый, так как в каждом байте хранится код символа.
В файле хранится текст:
Пределы воспламеняемости некоторых газов и паров в воздухе и в кислороде, % (объемы). Давление 1 бар, температура 20 °С.
Вещество Нижний предел в воздухе Верхний предел в воздухе Нижний предел в кислороде Верхний предел в кислороде
Аммиак NH3 15,0 28,0 15 79
Окись углерода СО 12,5 74 15,5 94
Водород Н2 4,0 75,6 4,0 94
Метан СН4 5,0 15,0 5 61
Метилхлорид СН3С1 7,1 18,5 8,0 66
Этан С2Н6 3,0 12,5 3,0 66
Диметилэфир С2Н6О 2,0 27,0 3,9 61
Этилен С2Н4 2,7 28,5 2,9 80
Окись этилена С2Н4О 2,6 100 - -
Ацетальдегид С2Н4О 4,0 57,0 4,0 93
Винилхлорид С2Н3С1 3,8 29,3 4,0 70
Ацетилен С2Н2 1,5 82,0 2,8 93
Трихлорэтилен С2НС13 7,9 - 10,0 65
Пропан СзН8 2,1 9,5 2,3 55
Пропилен С3Н6 2,0 11,7 2,1 53
н-Бутан C4H10 1,5 8,5 1,8 49
Диэтиловый эфир С4Н10О 1,7 36 2,0 82
1-бутилен С4Н8 1,6 10 1,8 58
2-бутилен С4Н8 1,7 9,7 1,7 55
Текст разбит на строки непечатными (управляющими) символами CR/LF.
Первая строка никак не разделена и в программе будет представлена типом String.
Вторая строка разбита на элементы непечатным (управляющим) символом горизонтальной табуляции (НТ). Для представления второй строки в программе будет использоваться строковый массив типа String.
Третья и последующие строки, так же как и вторая, разбиты на элементы символом горизонтальной табуляции (НТ), но элементы имеют разные типы (строковые и числовые), поэтому будет использоваться ЗАПИСЬ пользовательского типа “param”, состоящего из одной переменной типа String и массива типа Single - для одной строки
Type param
prop As String
vol(7) As Single
EndType
и массив ЗАПИСЕЙ – для нескольких строк.
Dim mas() As param
В тексте также вместо чисел встречается символ «дефис» («-»), что затрудняет сортировку строк, поэтому данный символ программа будет заменять на число ноль.
If smb = "-" Then
par.vol(q) = 0
Для последовательного чтения строк из файла будет использован цикл DOUNTIL, условием выхода из цикла будет являться состояние EOF (EndOfFile-конец файла). Конец файла определяется размером файла. Подпрограмма находится в отдельном модуле и вызывается главной программой.
Sub InputData(name As String, nf1 As Integer, st() As String, sk() As String, k As Integer)
k = 0
Open name For Input As nf1
Do Until EOF(nf1)
ReDim Preserve st(k)
Line Input #nf1, st(k)
ReDim Preserve sk(k)
sk(k) = st(k)
k = k + 1
Loop
Close #nf1
End Sub
2.
Кодировка представляет собой таблицу символов, где каждой букве алфавита (а также цифрам и специальным знакам) присвоен свой уникальный номер - код символа.
Стандартизирована только половина таблицы, т.н. ASCII-код - первые 128 символов, которые включают в себя буквы латинского алфавита. И с ними никогда не бывает проблем. Вторая же половина таблицы (а всего в ней 256 символов - по количеству состояний, который может принять один байт) отдана под национальные символы, и в каждой стране эта часть различна. Но только в России было придумано целых 5 различных кодировок. Термин "различные" обозначает то, что одному и тому же символу соответствует разный цифровой код. Т.е. если неправильно определить кодировку текста, то пользователю предстанет абсолютно нечитаемый текст.
Использование множества кодировок в современном ПО создаёт много неудобств не только программистам, но и пользователям. Согласно рациональной точке зрения, справиться с непонятными символами можно, если программы будут автоматически распознавать кодировку входящего текста.
Для однобайтных кодировок можно учитывать тот факт, что частота использования разных букв сильно различается (например, в русском часто используется «о», но редко «ъ»). Поэтому, зная язык текста, можно легко выбрать кодировку, в которой частота байтов лучше соответствует частоте букв данного языка.
Для определения кодировки текстового файла нужно выполнить следующий план действий:
1. Поочередно перебирая символы из текста, определять код символа и проверять принадлежность его к каждой кодовой таблице.
2. Увеличивать на 1 счетчики тех кодовых таблиц, которым не противоречит код символа.
3. Найти максимальное значение среди счетчиков – оно укажет на наиболее вероятную кодировку.
Текст, кодированный в Unicode, выглядит иначе. Каждый символ в Unicode кодируется двумя байтами, в первом байте памяти хранится код символа Unicode, а во втором всегда 04. Поэтому чтобы определить имеет ли текст кодировку Unicode, достаточно проверить второй байт памяти, он должен хранить код 04.
Подпрограмма проверки принадлежности текста
Наверняка у вас есть товары или услуги, продажа которых приносит вам максимальную прибыль. Для быстрого старта в сети вам необходимо создание посадочной страницы (одностраничного сайта), на которой будет размещена информация о маржинальных товарах/услугах интернет магазина. За 8 лет опыта разработки конверсионных страниц мы выработали оптимальную структуру, которая позволит привлекать через landing page больше продаж. На такую структуру «одевается» ваш контент — фирменный стиль, тексты, фотографии, уникальные торговые предложения, после чего страница выходит в свет. Разработка лендинга и запуск в сети — до 7 рабочих дней. Стоит отметить, что в разработку самой посадочной страницы входит и написание копирайтером продающих текстов для вашего бизнеса, чтобы каждый посетитель страницы захотел совершить покупку именно у вас. Результат: качественно разработаная продающая посадочная страница, которая готова приносить вам новых клиентов.