ss88 А как лучше - читать текстовый, создавать массив потом сортировать и записывать в бинарный файл или - сразу читать текстовик и записывать в бинарный а потом сортировать(уже в бинаре) ?
зависит от количества записей. если их очень много - то чтобы не убить оперативу делаешь сортировку слиянием, она работает с файлами. если записей не фатально много - сортировка в памяти и лишь потом запись.
Полностью согласен с Ra$cal, это уже тонкости контекста применения и это не касается банальной лабораторной работы 1-го или 2-го курса, которая рассматривалась в данном случае. Вот бы преподы радовались, если бы мы писали такой код на 1-м или 2-м курсе ))) А то... вспомню-вздрогну )))
TurboPascal 27 школьных задач по turbopascal - 500 рублей , могу и webmoney ... скачать задачи кому интересно : icq : 2669856-пять-шесть
кто-нибудь может переписать этот код в наиболее простой вид? Code: #ifndef MYSTRING_HPP #define MYSTRING_HPP #include <cstring> // memcpy, strlen #include <cstdlib> // malloc, realloc class MyString { private: char *data; size_t length; public: MyString() : data(0), length(0) { } // default constructor MyString(const char *str) { if (0 != str) { size_t size = std::strlen(str) + 1; length = size - 1; data = static_cast<char *>(std::malloc(size)); std::memcpy(data, str, size); } else { length = 0; data = 0; } } MyString(const MyString& other) { length = other.length; data = static_cast<char *>(std::malloc(length + 1)); std::memcpy(data, other.data, length + 1); } ~MyString() { if (0 != data) { delete data; } } MyString& operator=(const MyString& rhs) { if (this == &rhs) { return *this; } length = rhs.length; data = static_cast<char *>(std::realloc(data, length + 1)); std::memcpy(data, rhs.data, length + 1); return *this; } operator const char*() { return data; // unsafe } MyString& operator+=(const MyString& rhs) { data = static_cast<char *>(std::realloc(data, length + rhs.length + 1)); std::memcpy(data + length, rhs.data, rhs.length + 1); length += rhs.length; } const MyString operator+(const MyString& rhs) const { return MyString(*this) += rhs; } char operator[](int idx) const { if (idx >= 0 && idx <= length) { return data[idx]; } } char& operator[](int idx) { if (idx >= 0 && idx <= length) { return data[idx]; } } }; #endif
Вот описание алгоритма: http://protect.htmlweb.ru/p11.htm#MP 2Spider545 исходные данные для проги должны быть: строка, N и M? или я неправильно понял?
Задачка Дан файл, в котором записано N символов. Найти наиболее часто встречающийся элемент в файле (файл будет более чем наполовину состоять из него) за O(1) памяти (не используя массивы и динамические структуры памяти). Например: Code: 19zz2gzzkozfz5zxOzzzDjzfzzz Программа должна вывести: Code: z Ах да, чуть не забыл, разрешается пройтись по файлу только 1 раз.
вот само задание: Разработать программу, взламывающую шифр, основываясь на статистике естественного языка. Исходные данные : Дан шифротекст и размер блока. Требуется получить открытый текст и ключ — последовательность перестановки символов (получить автоматически). И все основываясь на метод простой перестановки.
Мда... Какбы в то что вы первоначально тут спросили никак не входил криптоанализ... И у меня возникло предчувствие что даже в ВУЗах на подобное даётся не 2 дня И если по части программирования эта задача достаточно тривиальна, то криптоанализ в виде статистики естественного языка требует как минимум наличия этой самой статистики...(которая у вас должна быть) А так задачка достаточно интересная, но как я уже говорил без доп. материалов можно слишком перемудрить, и тогда вам сложно будет выдать эту программу за свою...
Эта самая статистика есть могу выложить тут))))) Вся проблема в том как получить ключ из текста, с данными этой статистики, как реализовать на СИ.... А потом уже как есть ключ текст по блочно расшифровывается...так вот дела(((
В вашем случае думаю лучше создать здесь отденьную тему, в шапке которой максимально описать задачу, и выдать максимум имеющихся данных. А алгоритм у вас будет примерно следующим: Т.к. длинна ключа нам всётаки известна, мы делаем перебор всех возможных вариантов, и основываясь на статистике давать каждому результату коэфициент верности. После чего вариант с наивысшим коэфициентом и будет верным. Это самый ресурсоёмкий вариант, но вместе с тем и самый простой. Усложнить и ускорить его можно например если вводить доп. данные, такие как "слово не может начинаться на Ы, Ъ и Ь" что уменьшить потенциальное кол-во вариантов для перебора...
На паскале оч. давно не писал... Code: program Project1; var summ, i: integer; begin i:=0; summ:=0; while true do begin inc(i, 4); if i > 50 then break; inc(summ, i); end; writeln('Summ: ', summ); readln; end.
Всем привет ! Так как ето единый раздел для ЛР задаю вопрос здесь .... В общем помогите решыть на "JAVA" -Дано целое число N (> 0). Найти значение выражения 1.1 – 1.2 + 1.3 – … (N слагаемых, знаки чередуются). Условный оператор не использовать. -Дано число A (> 1). Вывести наименьшее из целых чисел K, для которых сумма 1 + 1/2 + … + 1/K будет больше A, и саму эту сумму. -Описать процедуру SortDec3(A, B, C), меняющую содержимое переменных A, B, C таким образом, чтобы их значения оказались упорядоченными по убыванию (A, B, C — вещественные параметры, являющиеся одновременно входными и выходными). С помощью этой процедуры упорядочить по убыванию два данных набора из трех чисел: (A1, B1, C1) и (A2, B2, C2).
Помогите найти ошибку! [PASCAL]program primer; var f,x:real; begin writeln(x='); readln(x); ifx>0then f:=(exp(3*ln(x))/sgrt(3))-exp(x)*ln(abs(exp(3*ln(1,37)+exp(3*ln(x))+4/3 else f:=(exp(3*ln(x))=sgrt(7))/cos(x-2pi))-ln(abs(exp(3*ln(x)))+4*(sin(x)/cos(x)); writeln('f=',f); readln; end.[/PASCAL]