задача такая: Дан произвольный русский текст. Проверить каких букв в нем больше: гласных или согласных. При выполнении задания необходимо текст считать из текстового файла. Результат выполнения программы записать в исходный файл.
вот чтоя нарешал:
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:=1to length(V1) docase V1[i] of'а','о','у','э','ы','и','я','ё','ю','е' : g:=g+1;
'б','в','г','д','ж','з','й','к','л','м','н','п','р','с','т','ф','х','ц','ч','ш','щ' : s:=s+1;
if g<s thenWrite (text,V1)
elseWrite (text,V1);
end;
проверьте кто может и укажите ошибки плз. З.Ы. ошибка выскакивает после
Но в правильности всего остального сильно неуверен Прошу помочь .
renesko1
21.06.2008 20:47
f : text ;
mas1 : massiv c glasnimii ;
mas2 : massiv c soglsnimi ; //инициализиркй их тоже сам
simvol : char ;
g : integer ;
begin
assign(f, 'put k text');
reset(f) ;
whilenot eof(f) dobeginREAD(f, cimvol) ;
if simvol prinadlechit k mas1 then inc(g) ; // функцию принадлежности напишешь сам как нмибудь
if simvol prinadlechit k mas2 then dec(g) ;
end ;
if g > 0then writeln('glasnix > soglasnix');
if g < 0then writeln('soglasnix > glasnix') ;
if g = 0then writeln('glasnix = soglasnix' );
end ;
вроде так ;
Client
21.06.2008 21:54
А не лучше использовать множества?
renesko1
21.06.2008 21:58
ну да, но я как то с множесвами не очень сегодня посмотрю.
Sozialist
22.06.2008 13:25
if g<s thenWrite (text,V1)
elseWrite (text,V1);
Зачем условие, если ты в любом случае записываешь строку в файл? Затем ошибка!!!! Строки записываются в файл ПОСИМВОЛЬНО. Использовать множества можно запросто:
if v1[i] in ['а','е','ё','и','о','у','э','ю','я'] then inc(g) else ...
renesko1
22.06.2008 13:29
if v1[i] in ['а','е','ё','и','о','у','э','ю','я'] then inc(g) else ...
В else тоже придется делать проверку на вхождение в множество, тк кроме букв в файле могут быть другие символы, наверное.
Sozialist
22.06.2008 14:50
Естественно
renesko1
22.06.2008 15:31
это я так на всякий случай ...
MiH@N
23.06.2008 10:08
procedure TForm1.Button1Click(Sender: TObject);
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);
whilenot eof(f) dobeginREAD(f, cimvol);
if simvol prinadlechit k mas1 then inc(g); // функцию принадлежности напишешь сам как нмибудь
if simvol prinadlechit k mas2 then dec(g);
end;
if g > 0then writeln('glasnix > soglasnix');
if g < 0then writeln('soglasnix > glasnix');
if g = 0then writeln('glasnix = soglasnix' );
end;
end;
эт конечно глупый вопрос но...что делает dec(g)...я так понимаю он уменьшает...на единицу...чтоли...Правильно ли я понимаю? и...можно ли былоб сделать так: if simvol prinadlechit k mas2 then inc(d) ; а потом сравнивать d и g ? ...иии...надо ли в конце приписать closefile(f) и если надо то перед каким ендом или это не принципиально?
иии...как написать ф-ию принадлежности чёт никак не соображу...допустим надо открыть файл используя компонент OpenDialog перегнать текстовый файл в массив, потом берём элемент этого массива a[i, j] и проверяем его на принадлежность к массиву mas1...так чтоль? З.Ы. Оч срочно надо.Помогите кто могёт!
тут бета-версию наклепал не без помощи умеющих...новсё равно ошибка выходит...зацените:
procedure TForm1.Button1Click(Sender: TObject);
var
f: textfile;
glas, soglas: setof char;
ks, kg: integer;
cimvol: char;
begin
glas:= ['о','у','э','ы','и','я','ё','ю','е'];
soglas:= ['б','в','г','д','ж','з','й','к','л','м','н','п','р','с','т','ф','х','ц','ч','ш','щ','ф'];
ks:= 0;
kg:= 0;
assignfile(f,'L:\text.txt');
reset(f);
whilenot eof(f) dobeginread(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;
строка writeln('glasnix < soglasnix') ; выделяется синим и слева появляется зелёная стелка...и ошибка :Progect Progect1.exe raised exception class EInOutError message 'I/O error 105'.pROCESS STOPPED/ uSE STEP OR RUN TO CONTINUE
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.