Program z6;
Uses crt;
Var stroka,result:string;
c:char;
Procedure Read_From_File(Var s:string);
var text_file:text;
file_name:string;
begin
Write('Vvedite im9 faila: ');
Readln(file_name);
Assign(text_file,file_name);
Reset(text_file);
If IOResult<>0 then {proverka owibki otkriti9я}
begin
Writeln('fail',file_name,'ne sywestvyet');
Readln;
Halt;
end
else
begin
Readln(text_file,s);
Close(text_file);
Writeln('Pro4itanni tekst:');
Writeln(s);
end;
end;
Procedure Save_To_File(s:string);
Var text_file:text;
file_name:string;
begin
Write('Im9 faila dl9 zapisi: ');
Readln(file_name);
Assign(text_file,file_name);
Rewrite(text_file);
Writeln(text_file,s);
Close(text_file);
Writeln('Rezyltat zapizan v fail ',file_name);
end;
begin
clrscr;
Read_From_File(stroka);
Save_To_File(result);
end.
Работа с файлами
Прошу помощи.
Что уже есть?
Код:
собственно сама замена и выборка мне и не понятна.
Если 'а' стоит до пробела и после пробела, тогда оставляем как есть иначе меняем 'а' на 'о'? Потом, если от пробела до пробела было больше 2 замен, то записываем это слово в файл. Я правильно понимаю?
Цитата: Pen'
Если 'а' стоит до пробела и после пробела, тогда оставляем как есть иначе меняем 'а' на 'о'?
Да. Это получается, что 'а' стоит в начале и конце слова.
Цитата: Pen'
Потом, если от пробела до пробела было больше 2 замен, то записываем это слово в файл
Да, но лучше писать не слово, а всю строку уже после изменения. Читаться из файла же будет по строкам.
А в коде как это будет выглядеть?
Length, Delete.
понятно. Только ничего нового я не узнал((
Цитата: Pen'
понятно. Только ничего нового я не узнал((
это все потому что учится надо не на форуме.
тем более что требования кода является грубым нарушением и прямо запрещено правилами.
И требования я никакие не выдвигал, если Вы заметили, прозвучал только вопрос.
Нет так нет. Сейчас решаю своими силами.
Тем более что как это сделать - описали вполне подробно. Дело только за тобой
Приказ понял, сэр!
Код:
Program z6;
Uses crt;
Var stroka, result:string;
Procedure Read_From_File (Var s:string);
var text_file:text;
file_name:string;
begin
Write('Enter file to read: ');
Readln(file_name);
Assign(text_file,file_name);
Reset(text_file);
If IOResult<>0 then
begin
Writeln('fail',file_name,'not found');
Writeln('Program finished. Press Enter');
Readln;
Halt;
end
else
begin
Readln(text_file,s);
Close(text_file);
Writeln('Readed text:');
Writeln(s);
end;
end;
Procedure Save_To_File(source:string; result:string);
Var text_file:text;
file_name:string;
begin
Write('Enter file to write: ');
Readln(file_name);
Assign(text_file, file_name);
Rewrite(text_file);
Writeln(text_file, result);
Close(text_file);
Writeln('Result written into ',file_name);
end;
Procedure Replace(source:string; Var result:string);
Var i, j: Integer;
allowed_symbols: set of char;
firstIndex, lastIndex: Integer;
current_symbol: Char;
isWordStarted: Boolean;
temporatory_result: String;
matches: Integer;
begin
i := 1;
j := 1;
firstIndex := 1;
lastIndex := 1;
temporatory_result := '';
allowed_symbols := ['a'..'z', 'A'..'Z'];
isWordStarted := false;
matches := 0;
While i <= length(source) do begin
current_symbol := source;
if current_symbol in allowed_symbols then begin
if isWordStarted then begin
lastIndex := i;
end else begin
firstIndex := i;
lastIndex := i;
isWordStarted := true;
end;
if ((current_symbol = 'a') or (current_symbol = 'A')) and (i <> firstIndex) then begin
inc(matches);
end;
end else begin
if (source[lastIndex] = 'a') and (lastIndex <> 1) then begin
dec(matches);
end;
if (matches > 2) and (lastIndex <> 1) then begin
for j := firstIndex to lastIndex do begin
if source[j] = 'a' then begin
temporatory_result := temporatory_result + 'o';
end else begin
if source[j] = 'A' then begin
temporatory_result := temporatory_result + 'O';
end else begin
temporatory_result := temporatory_result + source[j];
end;
end;
end;
temporatory_result := temporatory_result + ' ';
end;
firstIndex := i;
lastIndex := i;
matches := 0;
isWordStarted := false;
end;
inc(i);
end;
if matches > 2 then begin
for j := firstIndex to i - 1 do begin
if source[j] = 'a' then begin
temporatory_result := temporatory_result + 'o';
end else begin
if source[j] = 'A' then begin
temporatory_result := temporatory_result + 'O';
end else begin
temporatory_result := temporatory_result + source[j];
end;
end;
end;
end;
result := temporatory_result;
Writeln;
Writeln('Write to file:');
Writeln(result);
end;
begin
clrscr;
Read_From_File(stroka);
Replace(stroka, result);
Save_To_File(stroka, result);
end.
Uses crt;
Var stroka, result:string;
Procedure Read_From_File (Var s:string);
var text_file:text;
file_name:string;
begin
Write('Enter file to read: ');
Readln(file_name);
Assign(text_file,file_name);
Reset(text_file);
If IOResult<>0 then
begin
Writeln('fail',file_name,'not found');
Writeln('Program finished. Press Enter');
Readln;
Halt;
end
else
begin
Readln(text_file,s);
Close(text_file);
Writeln('Readed text:');
Writeln(s);
end;
end;
Procedure Save_To_File(source:string; result:string);
Var text_file:text;
file_name:string;
begin
Write('Enter file to write: ');
Readln(file_name);
Assign(text_file, file_name);
Rewrite(text_file);
Writeln(text_file, result);
Close(text_file);
Writeln('Result written into ',file_name);
end;
Procedure Replace(source:string; Var result:string);
Var i, j: Integer;
allowed_symbols: set of char;
firstIndex, lastIndex: Integer;
current_symbol: Char;
isWordStarted: Boolean;
temporatory_result: String;
matches: Integer;
begin
i := 1;
j := 1;
firstIndex := 1;
lastIndex := 1;
temporatory_result := '';
allowed_symbols := ['a'..'z', 'A'..'Z'];
isWordStarted := false;
matches := 0;
While i <= length(source) do begin
current_symbol := source;
if current_symbol in allowed_symbols then begin
if isWordStarted then begin
lastIndex := i;
end else begin
firstIndex := i;
lastIndex := i;
isWordStarted := true;
end;
if ((current_symbol = 'a') or (current_symbol = 'A')) and (i <> firstIndex) then begin
inc(matches);
end;
end else begin
if (source[lastIndex] = 'a') and (lastIndex <> 1) then begin
dec(matches);
end;
if (matches > 2) and (lastIndex <> 1) then begin
for j := firstIndex to lastIndex do begin
if source[j] = 'a' then begin
temporatory_result := temporatory_result + 'o';
end else begin
if source[j] = 'A' then begin
temporatory_result := temporatory_result + 'O';
end else begin
temporatory_result := temporatory_result + source[j];
end;
end;
end;
temporatory_result := temporatory_result + ' ';
end;
firstIndex := i;
lastIndex := i;
matches := 0;
isWordStarted := false;
end;
inc(i);
end;
if matches > 2 then begin
for j := firstIndex to i - 1 do begin
if source[j] = 'a' then begin
temporatory_result := temporatory_result + 'o';
end else begin
if source[j] = 'A' then begin
temporatory_result := temporatory_result + 'O';
end else begin
temporatory_result := temporatory_result + source[j];
end;
end;
end;
end;
result := temporatory_result;
Writeln;
Writeln('Write to file:');
Writeln(result);
end;
begin
clrscr;
Read_From_File(stroka);
Replace(stroka, result);
Save_To_File(stroka, result);
end.
Уважаемый, kot_.
Я просил помощи и это было не просто так. Не буду голословен. Вот результат.
Вы просто не правильно меня поняли.