Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.01.18;
Скачать: CL | DM;

Вниз

Работа со 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.014 c
2-1228297641
Петя
2008-12-03 12:47
2009.01.18
Прцесс в диспетчере задач Windows


15-1226928359
Andryk
2008-11-17 16:25
2009.01.18
Вот подумал, мож тут кому надо?


15-1227066451
Slider007
2008-11-19 06:47
2009.01.18
С днем рождения ! 19 ноября 2008 среда


8-1189531969
Dmitry_12_08_73
2007-09-11 21:32
2009.01.18
Перекодировка русских букв в URL


15-1227512397
nnov
2008-11-24 10:39
2009.01.18
звук sound blaster 5.1