задача такая: Дан произвольный русский текст. Проверить каких букв в нем больше: гласных или согласных. При выполнении задания необходимо текст считать из текстового файла. Результат выполнения программы записать в исходный файл.
вот чтоя нарешал:
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;
проверьте кто может и укажите ошибки плз. З.Ы. ошибка выскакивает после
Но в правильности всего остального сильно неуверен Прошу помочь .
renesko1
22.06.2008 0:47
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 ;
вроде так ;
Client
22.06.2008 1:54
А не лучше использовать множества?
renesko1
22.06.2008 1:58
ну да, но я как то с множесвами не очень сегодня посмотрю.
Sozialist
22.06.2008 17:25
if g<s then Write (text,V1) else Write (text,V1);
Зачем условие, если ты в любом случае записываешь строку в файл? Затем ошибка!!!! Строки записываются в файл ПОСИМВОЛЬНО. Использовать множества можно запросто:
if v1[i] in ['а','е','ё','и','о','у','э','ю','я'] then inc(g) else ...
renesko1
22.06.2008 17:29
if v1[i] in ['а','е','ё','и','о','у','э','ю','я'] then inc(g) else ...
В else тоже придется делать проверку на вхождение в множество, тк кроме букв в файле могут быть другие символы, наверное.
Sozialist
22.06.2008 18:50
Естественно
renesko1
22.06.2008 19:31
это я так на всякий случай ...
MiH@N
23.06.2008 14: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); 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;
эт конечно глупый вопрос но...что делает 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: 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;
строка writeln('glasnix < soglasnix') ; выделяется синим и слева появляется зелёная стелка...и ошибка :Progect Progect1.exe raised exception class EInOutError message 'I/O error 105'.pROCESS STOPPED/ uSE STEP OR RUN TO CONTINUE
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.