![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
flashg |
![]() ![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 21 Пол: Мужской Репутация: ![]() ![]() ![]() |
Для каждого слова заданного предложения указать долю согласных. Определить слово в котором доля согласных максимальна.
Задание - необходимо регить на PASCAL на TYRBO или BORLAND. Я нашёл pas фаил содержащий код программы для нахождения одной буквы в строке я его немного переделал и теперь он находит две буквы. Но прога сразу увеличелась на 50% ![]() а также у меня нет кода (я не знаю как его прописать) для второй части задания. Определить слово в котором доля согласных максимальна. ПОПРАКА :o что тут не то с текстом Изначальный код был такой Код PROGRAM PR3; var s1:string[20]; n,q:integer; BEGIN q:=-1; writeln('Введите слово (до 20 букв)'); read(s1); n:=pos('А',s1); if n>0 then BEGIN repeat n:=pos('А',s1); q:=q+1; delete(s1,n,1); until n=0; END else q:=0; write('Кол-во букв А =',q); END. я решил чуть чуть помеять т.е. большую А на маленькую а - и уже ничего оно верно не считает Код PROGRAM PR3; var s1:string[20]; n,q:integer; BEGIN q:=-1; writeln('Введите слово (до 20 букв)'); read(s1); n:=pos('а',s1); if n>0 then BEGIN repeat n:=pos('А',s1); q:=q+1; delete(s1,n,1); until n=0; END else q:=0; write('Кол-во букв а =',q); END. а я так надеялся что введу вот такой код Код PROGRAM PR3; var b,g:string[200]; n,q,m,r:integer; BEGIN q:=-1; r:=-1; writeln('Введите слово'); read(b); read(g); n:=pos('г',g); m:=pos('б',b); if n>0 then BEGIN repeat n:=pos('г',g); q:=q+1; delete(g,n,1); until n=0; end else q:=0; if m>0 then BEGIN repeat m:=pos('б',b); r:=r+1; delete(b,n,1); until m=0; end else r:=0; write('Кол-во букв б =',r); write('Кол-во букв г =',q); END. и забив те буквы что мне надо прога мне найдёт те буквы что встречаются и укажет их - и тут 0. хотя буквы б тут находит а буквы г - прописывает 0 В чём глюк ? ![]() |
![]() ![]() |
flashg |
![]()
Сообщение
#2
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 21 Пол: Мужской Репутация: ![]() ![]() ![]() |
как насчёт примера с долями
Код uses crt; type Tstr = string; TWords = array[1..50] of TStr; var str:Tstr; words:TWords; n,j:integer; function GetWords(var s:Tstr; var W:TWords):integer; const limits=[#0..#32,'.',',','!','?',':',';']; var i,bword,count:integer; begin i:=1; count:=0; while(i<=Length(s)) do begin while(i<=length(s))and(s[i] in limits) do inc(i); if i<=length(s) then begin bword:=i; while(i<=length(s))and(not(s[i] in limits)) do inc(i); inc(count); W[count]:=copy(s,bword,i-bword); end; end; GetWords:=count; end; function GetP(var s:Tstr):integer; const [B][U]sogl=[#224..#256]-['а','е','ё','э','у','ю','и','о','ы','я']; [/U][/B] var i,p:integer; begin p:=0; for i:=1 to length(s) do if s[i] in sogl then inc(p); GetP:=p*100 div length(s); end; Begin clrscr; write('s='); readln(str); n:=GetWords(str,words); for j:=1 to n do writeln('Для слова ''',words[j],''' доля согласных = ',GetP(words[j]),'%'); readln End. я думал что надо поменять вот эту строчку а всё равно не воспринимает кирилицу - что ещё надо поменять |
![]() ![]() |
![]() |
Текстовая версия | 11.08.2025 1:54 |