задача такая: Дан произвольный русский текст. Проверить каких букв в нем больше: гласных или согласных.
При выполнении задания необходимо текст считать из текстового файла. Результат выполнения программы записать в исходный файл.
вот чтоя нарешал:
procedure TForm1.Button1Click(Sender: TObject);проверьте кто может и укажите ошибки плз.
var text : textFile; V1 : string; i,g,s : integer;
begin
s:=0; g:=0;
assignfile(text,'K:\text.txt');
reset(text);
read(text,V1);
for i:=1 to length(V1) do
case V1[i] of
'а','о','у','э','ы','и','я','ё','ю','е' : g:=g+1;
'б','в','г','д','ж','з','й','к','л','м','н','п','р','с','т','ф','х','ц','ч','ш','щ' : s:=s+1;
if g<s then Write (text,V1)
else Write (text,V1);
end;
else Write (text,V1);такая:
[Error] Unit1.pas(40): Constant expression expected.
f : text ;
mas1 : massiv c glasnimii ;
mas2 : massiv c soglsnimi ; //инициализиркй их тоже сам
simvol : char ;
g : integer ;
begin
assign(f, 'put k text');
reset(f) ;
while not eof(f) do begin
READ(f, cimvol) ;
if simvol prinadlechit k mas1 then inc(g) ; // функцию принадлежности напишешь сам как нмибудь
if simvol prinadlechit k mas2 then dec(g) ;
end ;
if g > 0 then writeln('glasnix > soglasnix');
if g < 0 then writeln('soglasnix > glasnix') ;
if g = 0 then writeln('glasnix = soglasnix' );
end ;
А не лучше использовать множества?
ну да, но я как то с множесвами не очень сегодня посмотрю.
if g<s then Write (text,V1)
else Write (text,V1);
if v1[i] in ['а','е','ё','и','о','у','э','ю','я'] then inc(g) else ...
if v1[i] in ['а','е','ё','и','о','у','э','ю','я'] then inc(g) else ...
Естественно
это я так на всякий случай ...
procedure TForm1.Button1Click(Sender: TObject);эт конечно глупый вопрос но...что делает dec(g)...я так понимаю он уменьшает...на единицу...чтоли...Правильно ли я понимаю?
var
mas1 : array ['ф','о','у','э','ы','и','я','ё','ю','е'] of char;
mas2 : array ['б','в','г','д','ж','з','й','к','л','м','н','п','р','с','т','ф','х','ц','ч','ш','щ'] of char;
f : text;
mas1 : massiv c glasnimii;
mas2 : massiv c soglsnimi; //инициализиркй их тоже сам
simvol : char;
g : integer;
begin
assign(f, 'K:\f.txt');
reset(f);
while not eof(f) do begin
READ(f, cimvol);
if simvol prinadlechit k mas1 then inc(g); // функцию принадлежности напишешь сам как нмибудь
if simvol prinadlechit k mas2 then dec(g);
end;
if g > 0 then writeln('glasnix > soglasnix');
if g < 0 then writeln('soglasnix > glasnix');
if g = 0 then writeln('glasnix = soglasnix' );
end;
end;
procedure TForm1.Button1Click(Sender: TObject);строка writeln('glasnix < soglasnix') ; выделяется синим и слева появляется зелёная стелка...и ошибка :Progect Progect1.exe raised exception class EInOutError message 'I/O error 105'.pROCESS STOPPED/ uSE STEP OR RUN TO CONTINUE
var
f: textfile;
glas, soglas: set of char;
ks, kg: integer;
cimvol: char;
begin
glas:= ['о','у','э','ы','и','я','ё','ю','е'];
soglas:= ['б','в','г','д','ж','з','й','к','л','м','н','п','р','с','т','ф','х','ц','ч','ш','щ','ф'];
ks:= 0;
kg:= 0;
assignfile(f,'L:\text.txt');
reset(f);
while not eof(f) do
begin
read(f,cimvol);
if cimvol in glas then
inc(kg);
if cimvol in soglas then
inc(ks);
end;
if ks > kg then
writeln('glasnix < soglasnix');
if kg > ks then
writeln('glasnix > soglasnix');
if kg = ks then
writeln('glasnix = soglasnix');
closefile(f);
end;