Другие языки программирования и технологии

Помогите найти ошибки в программе!

Program Lab_1_1; uses crt; const n=15; type buk = 'a'..'z'; num= '1'..'5'; var num1:num; myLetters : buk; i:integer; s,s1,put,put1:string; f,f1:text; b:buk; a: array [1..n] of buk; {-----------------------------------------} Procedure SozdText; Var Tx : Text; FilName : String; Stroka : String; i,n : Integer; Begin write ('Vvedite put: '); readln; Readln (put); Assign(Tx,put); Rewrite (Tx); Write ('Vvedite kol-vo strok texta: '); Readln(n); Writeln ('Vvedite text'); For i:=1 to n do Begin Readln (Stroka); Writeln(Tx,Stroka); End; Close(Tx); writeln; writeln ('Viberite dalneischee deistvie: '); read (num1); End; {-----------------------------------------} Procedure otkrF (b:buk; i:integer); begin write ('Vvedite put: '); readln; readln (put); Assign (f, put); Reset (f); while not EOF(f) do begin read (f, b); write (b); end; close (f); end; {-----------------------------------------} Procedure SravF (b:buk); {берет строку их первого файла и сравнивает со второй} var i: integer; begin i:=1; write ('Vvedite put do rezultata: '); readln (put1); Assign (f1, put1); Reset (f1); while Not Eof(f1) do begin Readln(f1, s); if s1 <> s then begin writeln (s1); end; end; Close(f1); end; {-----------------------------------------} Procedure massF (i:integer) ; {берет строку из первого файла и пишет ее в переменную с} begin Assign (f, put); Reset (f); while not EOF(f) do begin readln (f, s1); Sravf (b); end; close (f); writeln; writeln ('Viberite dalneischee deistvie: '); read (num1); end; {-----------------------------------------} BEGIN clrScr; put:='E:\1.txt'; i:=0; writeln ('!!! viberite deistvie: !!!'); writeln ('! 1. Sozdanie novogo file !'); writeln ('! 2. Prosmotor file !'); writeln ('! 3. Redaktirovanie file !'); writeln ('! 4. Sravnenie failov !'); writeln ('! 5. Exit !'); Repeat read (num1); until (num1='1') or (num1='2') or (num1='3') or (num1='4') or (num1='5'); if num1 = '1' then SozdText; if num1 ='2' then begin otkrF(b, i); massF(i); end; if num1='4' then SravF (b); if num1='5' then exit; readln; END.
Sergei Chernov
Sergei Chernov
768
я во всей программе не разбирался, но сравнение дожно быть примерно таким (если строи идут по порядку, но во втором файле некоторые могут отсутствовать:
Assign (f1, put1); Assign (f2, put2);
reset(f1); reset(f2);
isset := true;
while not EOF(f1) do
begin
ReadLn(f1, s1);
if isset and not EOF(f2) then ReadLn(f2, s2);
if s1 <> s2 or EOF(f2) then
begin
Writeln('V ', put2, ' net stroki "', s1, '"');
isset := false;
end else isset := true;
end;
close(f1);
close(f2);

Если строки идут вранобой:
Assign (f1, put1);
Assign (f2, put2);
reset(f1);
isset := true;
while not EOF(f1) do
begin
ReadLn(f1, s1);
s2 := '_' + s1;
reset(f2);
while not EOF(f2) and (s1 <> s2) do
begin
ReadLn(f2, s2);
end;
if EOF(f2) and (s1 <> s2) then Writeln('V ', put2, ' net stroki "', s1, '"');
close(f2);
end;
close(f1);
Михаил Писклов
Михаил Писклов
19 854
Лучший ответ
И что это за куча говна ?
ГДЕ оригинал задания ?
Валерий Пензин
Валерий Пензин
32 502
вы бы лучше скинули то что говорит вам компилятор, что он пишет, какая ошибка?
ЮФ
Юрий Фролов
1 541
read (num1); until (num1='1') or (num1='2') or (num1='3') or (num1='4') or (num1='5')
Что за хрень? Зачем так усложнять?
Не вникал в остальные режимы пока, но в процедуре сравнения 100% ересь
Procedure SravF (b:buk); {берет строку их первого файла и сравнивает со второй}
var
i: integer;
begin
i:=1;
write ('Vvedite put do rezultata: ');
readln (put1);
Assign (f1, put1);
Reset (f1);
while Not Eof(f1) do begin
Readln(f1, s);

до этих пор вроде как все правильно. Но дальше.. .

if s1 <> s then begin

если s - строка считанная из файла, то что такое s1 и где идет присвоение значение этой переменной? С чем ты сравниваешь строку из файла?