3.1 Задание - Программа разделения файлов
Допустим, у вас есть файл, который вы хотите записать на дискету и посредством дискеты передать его с одного компьютера на другой. Перед записью файла обнаруживается, что файл намного больше объема дискеты. Других средств, кроме дискет, для передачи файла у вас нет. Поэтому вам нужно написать программу, которая сможет:
- Разбить файл на части;
- Поочередно записать части на дискеты;
- Собрать файл из частей, на другом компьютере.
Параметры командной строки, которые должна обрабатывать ваша программа:
Code:
C:\Programs> FileSplit bigFile baseName chunkSize
- bigFile – указывается путь к файлу;
- baseName – общее базовое имя, для частей разбиваемого файла. Например, baseName = Part, тогда частям, разбиваемого файла, будут даны такие имена: Part0, Part1, Part2, …, PartN
- chunkSize – размер каждой части, за исключением последней.
Так же ваша программа должна уметь, корректно, обрабатывать текстовые и бинарные файлы.
Варианты решений, присылать на email: root@reverse4you.org
Данное задание успешно выполнили:
3.2 Задание - Программа сравнения текстовых файлов
Напишите программу, которая сравнивает два файла строка за строкой. Параметры командной строки, будут выглядеть так:
Code:
C:\Programs> FileComp file1 file2 [limit]
Считывайте с каждого файла по одной строке. Затем сверяйте их. Если строки идентичны, переходите к следующим строкам. Если же строки не идентичны, то:
- Выводите номер строки;
- Под номер строки выводите, поочередно, сверяемые строки.
Часто когда сверяемые файлы имеют много отличий, вы можете захотеть отключить вывод всех отличающихся строк. Для этого служит последний параметр «limit». В нем указывается, какое количество отличающихся строк можно вывести. Если лимит превышается, то программа должна сгенерировать исключение NumberFormatException и остановить свою работу.
Пример:
Code:
C:\Programs> FileComp .\Aug\main.cpp .\Sep\main.cpp 2
128:
bool DnsQuery_A();
bool DnsQuery_W();
129:
bool DnsQuery_W();
bool DnsQuery_A();
Варианты решений, присылать на email: root@reverse4you.org
Данное задание успешно выполнили:
3.3 Задание - Эксперимент
Допустим, вы проводите эксперимент, определяющий влияние белковой диеты на уровень холестерина в крови. У вас есть несколько групп людей. К каждой группе будет применена разная диета. В начале эксперимента, вы должны измерить уровень холестерина, в крови у каждого из участников. После взятия анализов начинается эксперимент, который длится один месяц. По окончании эксперимента вам надо зафиксировать конечный уровень холестерина.
Далее вам нужно внести все зафиксированные данные в текстовый файл, имеющий такой формат:
Code:
Номер эксперимента №1
Номер группы № 1
Человек 1, начальные данные о холестерине в крови
Человек 1, конечные данные о холестерине в крови
Человек 2, начальные данные о холестерине в крови
Человек 2, конечные данные о холестерине в крови
Человек N, начальные данные о холестерине в крови
Человек N, конечные данные о холестерине в крови
Номер группы № 2
Человек 1, начальные данные о холестерине в крови
Человек 1, конечные данные о холестерине в крови
Человек 2, начальные данные о холестерине в крови
Человек 2, конечные данные о холестерине в крови
Человек N, начальные данные о холестерине в крови
Человек N, конечные данные о холестерине в крови
Номер группы № 3
Человек 1, начальные данные о холестерине в крови
Человек 1, конечные данные о холестерине в крови
Человек 2, начальные данные о холестерине в крови
Человек 2, конечные данные о холестерине в крови
Человек N, начальные данные о холестерине в крови
Человек N, конечные данные о холестерине в крови
...
Номер группы № N
...
Далее, следует считать данные из вышеуказанного файла. После чего проанализировать полученные данные, подсчитав в каждой группе:
- Средний, начальный уровень холестерина в крови;
- Средний, конечный уровень холестерина в крови;
- Разницу межу начальным и конечным показателями.
После того, как полученные данные будут проанализированы – результат нужно записать в файл следующего формата:
Code:
Эксперимент 1
Группа 1
В среднем до эксперимента:
В среднем после эксперимента:
Разница:
Группа 2
В среднем до эксперимента:
В среднем после эксперимента:
Разница:
Группа 3
В среднем до эксперимента:
В среднем после эксперимента:
Разница:
...
Группа N
В среднем до эксперимента:
В среднем после эксперимента:
Разница:
Пример:
Code:
Experiment.txt
3
2
200
190
212
210
3
240
220
204
208
256
230
1
202
185
Code:
Result.txt
Эксперимент 3
Группа 2
В среднем до эксперимента: 206
В среднем после эксперимента: 200
Разница: -6
Группа 3
В среднем до эксперимента: 233
В среднем после эксперимента: 219
Разница: -14
Группа 1
В среднем до эксперимента: 202
В среднем после эксперимента: 185
Разница: -17
Варианты решений, присылать на email: root@reverse4you.org
Данное задание успешно выполнили:
3.4 Задание - Генератор
Написать программу, которая создает текстовый файл, содержащий в себе случайные не повторяющиеся числа, в диапазоне от 0 до HighValue-1.
Программа должна обрабатывать такие параметры:
- HighValue – задает предел, генерируемых случайных чисел;
- PerLine – задает количество выводимых символов на строку;
- Filename – задает имя файла, где будет сохранен результат работы программы.
Так же вы должны создать класс Random, в котором должен присутствовать метод «next_int();», который должен каждый раз, когда к нему обращаются, возвращать числовое значение в диапазоне от 0 до HighValue-1.
Пример:
Code:
C:\Programs> RandomIntData
Enter HighValue: 100
Enter how many per line: 10
Enter Filename: rdata.dat
Code:
C:\Programs>type rdata.dat
4 12 54 10 38 97 40 11 80 16
36 41 67 67 93 58 62 12 50 99
18 42 9 28 45 6 68 72 80 28
86 63 22 17 68 18 59 50 6 50
90 8 68 61 9 24 77 34 62 61
63 8 15 17 67 58 34 56 12 50
43 85 39 77 30 68 89 88 65 68
84 29 42 74 48 55 19 82 95 3
39 27 25 96 41 39 18 84 39 88
82 58 84 90 74 35 24 89 85 92
Варианты решений, присылать на email: root@reverse4you.org
Данное задание успешно выполнили:
3.5 Задание - Выделение операторов Java
Напишите программу, которая на входе получает исходный файл на языке Java, а на выходе обрамляет операторы Java, HTML-тегами “<B></B>”.
Пример, входящих данных:
Code:
public class JavaSource
{
public static void main ( String[] args )
{
if ( args.length == 3 )
new BigObject();
else
System.out.println("Too few arguments.");
}
}
Будет преобразован в:
Code:
<b>public</b> <b>class</b> JavaSource
{
<b>public</b> <b>static</b> <b>void</b> main ( String[] args )
{
<b>if</b> ( args.length == 3 )
<b>new</b> BigObject(); Binary-Auditing.com, Binary Auditing™ and the Binary Auditor™
14
<b>else</b>
System.out.println("Too few arguments.");
}
}
Варианты решений, присылать на email: root@reverse4you.org
Данное задание успешно выполнили:
3.6 Задание - Замена HTML-тегов пробелами
Любой текстовый редактор, например Блокнот, может быть использован для создания Web-страниц. К сожалению, подобные редакторы, не позволяют проверить орфографию. Для проверки орфографии можно использовать Word. Но когда файл содержит в себе HTML-теги, все строки с ними помечаются как ошибки, из-за чего тяжело обнаружить реальные ошибки. В данном упражнении будет написана программа, которая очистит файл от HTML-тегов (простых).
Напишите программу, которая считывает текстовый файл, а на выходе создает другой текстовый файл. Считываемый файл, должен содержать простой html-текст. Исходящий файл будет копией входящего, затем лишь исключением, что HTML-теги будут заменены на «пробелы». Наша программа не будет проверять HTML-синтаксис; она будет работать с потоком лексем и заменять каждую лексему, которая будет соответствовать «тегу». Для нашей программы, тегом будет любая лексема похожая на, этот тег:
Предположим, что “Crew” это любое слово (но на его месте может быть и одна буква или вообще отсутствовать какие-либо буквы), так же обратим внимание, что нет пробелов между скобками “<” и “>”. Такому описанию, подходят следующие теги:
Code:
<p> </p> <em> </em>
<rats> </1234> <blockquote> </>
И не подходят следующие:
Code:
< p> </ p> <em > </e m>
<table border cellpadding=5> <block quote> < /em>
Варианты решений, присылать на email: root@reverse4you.org
Данное задание успешно выполнили:
3.7 Задание - Замена HTML-тегов пробелами 2
Напишите программу, отфильтровывающую любой похожий тег:
На месте “Crew”, может быть любое слово, которое начинается сразу после “<”, а на месте “…” может быть любое количество текста, пока не встретится “>”, т.е. вам предстоит написать программу, отфильтровывающую похожие теги:
Code:
<p> </p> <em > </em >
<table border cellpadding=5> <word another word> </x y z>
Варианты решений, присылать на email: root@reverse4you.org
Данное задание успешно выполнили:
3.8 Задание - Крипто-аналитик
Часть первая:
Те или иные буквы алфавита имеют разную частоту появления в тексте. Вам следует написать программу демонстрирующую это. Параметры командной строки, будут выглядеть так:
Code:
C:\mydir> freqCount text.txt text.rept –all
Описание работы программы:
- Открыть файл text.txt;
- Привести все символы к верхнему регистру;
- Подсчитать количество всех символов;
- Подсчитать количество отдельных символов;
- Сохранить результат в файл text.rept
Пример файла “text.rept”:
Code:
C:\mydir> freqCount text.txt text.rept -all
Code:
C:\mydir>type text.rept
Total alphabetical characters: 373267
A: 31840 8.53%
B: 5942 1.59%
C: 7627 2.04%
D: 17541 4.69%
E: 45614 12.22%
F: 7191 1.92%
G: 7960 2.13%
H: 22500 6.02%
I: 25095 6.72%
J: 733 0.19%
K: 3443 0.92%
L: 17534 4.69%
M: 9324 2.49%
N: 26516 7.1%
O: 27344 7.32%
P: 6083 1.62%
Q: 275 0.07%
R: 21285 5.7%
S: 23398 6.26%
T: 32579 8.72%
U: 10720 2.87%
V: 4201 1.12%
W: 9063 2.42%
X: 546 0.14%
Y: 8745 2.34%
Z: 168 0.04%
Описание параметров командной строки:
- text.txt – любой текстовый файл. В место “text”, может быть любое имя;
- text.rept – имя файла, создаваемого программой. В нем будет храниться результат работы;
- -all – говорит программе о том, что нужно подсчитать все символы;
Часть вторая:
Иногда бывает нужно подсчитать, не частоту вхождения всех букв, а только первых букв слов. Вам следует усовершенствовать программу и добавить возможность подсчета, только, первых букв слов. Если в программе встречается перенос слова на другую строку “-”, то следующую за этим символом букву не учитывать, т.е. слово не должно превращаться в два слова.
Code:
C:\mydir> freqCount avonlea.txt avonlea.rept -first
Code:
It is often true that handling the an-
noying details makes up the large maj-
ority of the statements in a pro-
gram.
В примере выше слова “an-noying”, “maj-ority”, “pro-gram” – должны восприниматься как одно слово, а не два.
Описание параметров командной строки:
- text.txt – любой текстовый файл. В место “text”, может быть любое имя;
- text.rept – имя файла, создаваемого программой. В нем будет храниться результат работы;
- -all – говорит программе о том, что нужно подсчитать все символы;
- -first – говорит программе о том, что нужно подсчитать толь первые символы, каждого слова.
Варианты решений, присылать на email: root@reverse4you.org
Данное задание успешно выполнили:
3.9 Задание - Простое шифрование
Напишите программу, которая будет шифровать файлы. Программа должна шифровать каждый байт исходного файла, используя операцию поразрядного дополнения. В C++ это оператор “~”.
Пример:
Code:
input byte output byte
00110101 11001010
00000000 11111111
10000000 01111111
Варианты решений, присылать на email: root@reverse4you.org
Данное задание успешно выполнили:
3.10 Задание - Дамп
Напишите программу, которая открывает и отображает файл, в hex-виде. Пример:
Code:
C:\Programs> DIR
06/23/00 10:52p 1,859 HexDump.class
06/23/00 10:52p 2,855 HexDump.java
06/23/00 08:23p 60 ints.dat
Code:
C:\Programs> HexDump ints.dat
00 00 00 0C 00 00 03 FF FF FF FF C8 00 01 4B 2D
00 00 00 00 FF FF DB 65 00 00 00 22 00 00 02 8E
FF FF FF E9 FF FF FE DA 00 00 00 12 FF FF FF E7
00 00 00 AD 00 00 00 2D FF FF FF FE
Варианты решений, присылать на email: root@reverse4you.org
Данное задание успешно выполнили: