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. Подпрограмма проверки принадлежности текста к одной из шести кодовых таблиц: Sub FindCP(stroky() As String, msg1 As String, msg2 As String, index As Integer) Dim s As Integer, z As Integer Dim symb As String * 1 Dim kod As Byte Dim scp(7) As codepage Dim ks As String, ks1 As String Dim ks2 As String, ne As String ks = "Ваш текст предположительно имеет кодировку " ne = "не " ks1 = "Требуется " ks2 = "Перекодировка " For s = 0 To UBound(stroky) For z = 1 To Len(stroky(s)) symb = Mid(stroky(s), z, 1) kod = Asc(symb) If cp1(kod) Then scp(0).vol = scp(0).vol + 1: scp(0).name = "КОИ-8R" If cp2(kod) Then scp(1).vol = scp(1).vol + 1: scp(1).name = "Cp1251" If cp3(kod) Then scp(2).vol = scp(2).vol + 1: scp(2).name = "OEM" If cp4(kod) Then scp(3).vol = scp(3).vol + 1: scp(3).name = "Cp866" If cp5(kod) Then scp(4).vol = scp(4).vol + 1: scp(4).name = "Mac" If cp6(kod) Then scp(5).vol = scp(5).vol + 1: scp(5).name = "ISO" If cp71(symb) Then scp(6).vol = scp(6).vol + 1: scp(6).name = "Unicode" Next z Next s z = 0 For s = 0 To 6 If scp(s).vol >= z Then z = scp(s).vol: index = s End If Next s 'При совпадении счетчиков "КОИ-8R" и "cp1251" кодировка текста определяется как "cp1251" If ((scp(0).vol = scp(1).vol) And index <= 1) Then index = 1 If index = 1 Then msg1 = ks & scp(index).name msg2 = ks2 & ne & LCase(ks1) Else: msg1 = ks & scp(index).name msg2 = ks1 & LCase(ks2) End If End Sub Данная подпрограмма использует функции проверки принадлежности кода к заданному диапазону. Функции находятся в отдельном модуле.
Курсовые работы по информатике1. Структура заданного исходного файла и структуры данных, соответствующие данным файла Файл – это последовательность байтов, хранящаяся в памяти.
Оценок: 445 (Средняя 5 из 5)
Наверняка у вас есть товары или услуги, продажа которых приносит вам максимальную прибыль. Для быстрого старта в сети вам необходимо создание посадочной страницы (одностраничного сайта), на которой будет размещена информация о маржинальных товарах/услугах интернет магазина. За 8 лет опыта разработки конверсионных страниц мы выработали оптимальную структуру, которая позволит привлекать через landing page больше продаж. На такую структуру «одевается» ваш контент — фирменный стиль, тексты, фотографии, уникальные торговые предложения, после чего страница выходит в свет. Разработка лендинга и запуск в сети — до 7 рабочих дней. Стоит отметить, что в разработку самой посадочной страницы входит и написание копирайтером продающих текстов для вашего бизнеса, чтобы каждый посетитель страницы захотел совершить покупку именно у вас. Результат: качественно разработаная продающая посадочная страница, которая готова приносить вам новых клиентов.