Форум: "Начинающим";
Текущий архив: 2009.01.18;
Скачать: [xml.tar.bz2];
ВнизРабота со char массивом Найти похожие ветки
← →
programmer90 (2008-12-02 16:28) [0]Здравствуйте увадаемые мастера!
Возникла небольшая проблема
Даны два файла с массивом символов.
Найти первый различный символ в файле.
Например файл1:
a7df3j20fn dws
Файл2
a7df3j20fn1dws
первый различный символ в файле1 находится на позиции (1,11)
(11-ый символ в файле 1 - " " , а в файле 11 символ "1"...)
Плиз объясните подробно насколько это возможно...
Можно на pascal.
Спасибо всем!
← →
stas © (2008-12-02 16:31) [1]возможно. Например циклом перебрать.
← →
KilkennyCat © (2008-12-02 17:00) [2]Мастера не увядают!
← →
programmer90 (2008-12-02 17:27) [3]
> Мастера не увядают!
Да уж...зато я уже увял:)
← →
Slym © (2008-12-02 17:41) [4]1. Найти первый различный символ в 2 строках...
2. Считать 1 файл в 1 строку, 2 файл во 2 строку...
3. если файлы большие читать по немногу, но в цикле до конца файла
← →
Правильный$Вася (2008-12-02 17:43) [5]strcmp
← →
KilkennyCat © (2008-12-02 17:57) [6]i := 1;
a := true;
while (not eof(f1)) or (not eof(f2)) or (not a) do begin
read(f1, x);
read(f2, y);
a := x = y;
inc(i);
end;
if not a then result := i else один файл закончился раньше (один из файлов - копия куска другого), или оба одинаковые
← →
KilkennyCat © (2008-12-02 17:58) [7]ошибся, i := 0;
← →
clickmaker © (2008-12-02 18:03) [8]я бы замапил в память... но не весь, а кусок. Если куски одинаковые, то следующий кусок
← →
KilkennyCat © (2008-12-02 18:07) [9]
> clickmaker ©
а потом преподаватель будет пить водку и плакать от счастья, что нашелся и в его толпе гений! :)
← →
Leonid Troyanovsky © (2008-12-02 18:12) [10]
> programmer90 (02.12.08 16:28)
> Плиз объясните подробно насколько это возможно...
Специально для двоечников в свое время написал специальную функцию:
function CompareStreams(Stream1, Stream2: TStream): Boolean;
const
BufSize = 4096;
var
StreamSize: Int64;
nb1, nb2: Cardinal;
buf1, buf2: array [0..BufSize-1] of Byte;
begin
StreamSize := Stream1.Size;
Result := StreamSize = Stream2.Size;
if not Result then
Exit;
while (Stream1.Position < StreamSize) do
begin
nb1 := Stream1.Read(buf1, BufSize);
nb2 := Stream2.Read(buf2, BufSize);
if nb1 <> nb2 then
raise EReadError.Create("Compare error");
Result := CompareMem(@buf1, @buf2, nb1);
if not Result then
Exit;
end;
end;
Дополнить ее нахождением позиции отличного символа входит
в домашнее задание.
--
Regards, LVT.
← →
programmer90 (2008-12-02 18:48) [11]
> KilkennyCat © (02.12.08 17:57) [6]
Проклятый рантайм 103....
> Дополнить ее нахождением позиции отличного символа входит
Это понятно...
Параметры функции не смог подставить и это понятно почему....я не знаю что такое TStream.... вот и немогу его использовать
← →
Leonid Troyanovsky © (2008-12-02 18:51) [12]
> programmer90 (02.12.08 18:48) [11]
> ...я не знаю что такое TStream.... вот и немогу его использовать
TFileStream + F1.
--
Regards, LVT.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.01.18;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.006 c