Цитата:
Текстовая информация вводится с клавиатуры и заносится в текстовый файл. Признаком окончания ввода служит ввод пустой строки. Файл закрыть, затем открыть его для чтения и отредакти-ровать: в каждой строке текста проверить правильность расстанов-ки запятых. Правила следующие – в начале строки не должно быть запятой, не может идти подряд две и более запятых, перед запятой не может быть пробела, после запятой должен быть хотя бы один пробел. Отредактированный текст записать в промежуточный файл. Затем старый файл удалить, а новый переименовать – дать ему старое имя. Содержимое отредактированного файла выдать на экран.
|
Код:
Program ex9;
uses crt;
var
f,d:text; x:string;
procedure str(var x:string);
var i:integer;
begin
while x[1]=',' do delete(x,1,1);
while pos(',,',x)<>0 do delete(x,pos(',,',x),1);
while i<=length(x) do
begin
if (x[i]=',') and (x[i+1]<>' ') then begin insert(' ',x,i+1)
{ else inc(i)};
end;
end;
end;
begin
clrscr;
assign(f,'D:\text.txt'); rewrite(f);
repeat
writeln('ўўҐ¤ЁвҐ ⥪бв');
readln(x);
writeln(f,x);
until x=' ';
close(f);
reset(f);
assign(d,'D:\text1.txt'); rewrite(d);
while not eof(f) do begin
readln(f,x);
if pos(',',x)<>0 then
begin
str(x);
end;
writeln(d,x);
end;
close(d);
close(f);
erase(f);
rename(d,'D:\text.txt');
end.
Программа корректирует запятые, но не вставляет пробелы. Ибо программы не доходит до этого момента...
Цитата:
Программу из лабораторной работы № 6 переделать – ин-формацию о работнике фирмы хранить не в массиве, а в типизиро-ванном файле. Функциональность программы не изменилась. Для реализации запросов к информации файла использовать процедуры и функции. При написании процедур и функций продемонстриро-вать все способы передачи параметров – параметры переменные, параметры значения и параметры константы.
|
Вот изначальная прога:
Код:
Program ex6;
uses crt;
const n=2;
type form=record
nomer:string[15];
post:string[50];
oklad:integer;
fio:string[40];
pol:string[10];
end;
var a:array[1..n] of form;
c:char;
i,m,zh:byte;
fond,fondm,fondw:integer;
begin
clrscr;
for i:=1 to n do
begin
writeln('vvedite familiy');
readln(a[i].fio);
writeln('vvedite tabelniy nomer');
readln(a[i].nomer);
repeat
writeln('pol M/F');
readln(c);
c:=upcase(c);
case c of
'M': a[i].pol:='male';
'F': a[i].pol:='female'
else writeln('error, you debil, repeat pls');
end; until ((c='M')or(c='F'));
writeln('vasha dolsgnost');
readln(a[i].post);
writeln('vash oklad');
readln(a[i].oklad);
end;
fond:=0; fondm:=0; fondw:=0; m:=0; zh:=0;
for i:=1 to n do begin
fond:=fond+a[i].oklad;
if a[i].pol='male' then begin m:=m+1; fondm:=fondm+a[i].oklad end else
if a[i].pol='female' then begin zh:=zh+1; fondw:=fondw+a[i].oklad;
end; end;
writeln('fond firmy=', fond);
writeln('fond oklada muzchin=', fondm, 'fond oklada zhenshin=', fondw);
writeln('vsego muzchin=',m,'vsego zhenchin=',zh);
if fondm=1000 then writeln('y vas est kosar, you pocik ^^');
readln;
end.
Вот что у меня вышло:
http://narod.ru/disk/34873503001/123.PAS.html
В ходе выполнения вылетает со словами:"ошибка записи на диск".
Также, прошу помочь с параметрами переменными и параметрами константами. Как и где их реализовать?