1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
задача такая: Дан произвольный русский текст. Проверить каких букв в нем больше: гласных или согласных. При выполнении задания необходимо текст считать из текстового файла. Результат выполнения программы записать в исходный файл.
вот чтоя нарешал:
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;
проверьте кто может и укажите ошибки плз. З.Ы. ошибка выскакивает после
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 v1[i] in ['а','е','ё','и','о','у','э','ю','я'] then inc(g) else ...
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