![]() |
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 В чём глюк ? ![]() |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата(flashg @ 4.08.05 17:39) :o что тут не то с текстом В общем так: программа, которую ты привел как неправильную, совершенно рабочая. Все дело - в кривости рук. Смотри внимательно: Цитата 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. Забыл, или не захотел заметить? И сразу же "что-то с кодом"? ДА !!! Но заметь, с ТВОИМ кодом, ты его исправил, так будь добр исправлять до конца !!! Теперь дальше. Цитата(flashg @ 4.08.05 17:39) Для каждого слова заданного предложения указать долю согласных. Идешь в FAQ и находишь там функцию разбиения строки на слова, это уже обсуждалось десятки раз, выкладывать сюда эту функцию еще раз у меня нет ни малейшего желания... Потом для КАЖДОГО слова (в цикле) проделываешь вот такую простую операцию:begin где _word - это массив слов, через который функция разбиения строки возвратит результат, а soglas - множество, содержащее все согласные буквы. А вот для этого: Цитата(flashg @ 4.08.05 17:39) Определить слово в котором доля согласных максимальна. тебе придется еще хранить максимальное значение count, но нахождение максимума "на лету" тоже неоднократно обсуждалось, и элементарно находится в поиске... |
![]() ![]() |
![]() |
Текстовая версия | 11.08.2025 1:54 |