![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
симав |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 24 Пол: Женский Репутация: ![]() ![]() ![]() |
Подсчитайте, какой процент слов в тексте содержит удвоенную букву.
Вот, что я сделала: Код var s:string; p:real; n,k,i:byte; begin readln(s); for i:=1 to length(s) do begin if s[i]=' ' then n:=n+1; if s[i]:=s[i+1] then k:=K+1; end; p:=(n/k)*0.1; writeln('p=',p:3:3); readln; end. |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Сразу ошибка:
{ вот тут до len - 1 иначе будет выход за конец строки } Скорее всего должно сработать, только "процент" - это 0.01 а не 0.1 |
симав |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 24 Пол: Женский Репутация: ![]() ![]() ![]() |
Спасибо. :thanks:
|
hiv |
![]()
Сообщение
#4
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 660 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
Проценты совсем неправильно считаются! n - количество слов, k - количество слов где есть парные буквы. Тогда процент счтается как k/n*100
Вот как надо: Код program dubleb; var s:string; n,k,i:byte; boy :boolean; begin readln(s); n:=0; k:=0; i:=1; while (i<=length(s))and(s[i]=' ') do inc(i); while i<=length(s) do begin if s[i]=' ' then begin inc(n); inc(i); while (i<=length(s))and(s[i]=' ') do inc(i); end else begin boy:=false; while (i<=length(s))and(s[i]<>' ') do begin if i>1 then boy:=boy or (s[i]=s[i-1]); inc(i); end; if boy then inc(k); if (i>length(s))and(s[length(s)]<>' ') then inc(n); end; end; if n>0 then writeln('p=',(k/n*100):5:1,'%') else writeln('В тексте нет слов!'); readln; end. -------------------- Никогда не жадничай. Свои проблемы с любовью дари людям!
|
симав |
![]()
Сообщение
#5
|
Новичок ![]() Группа: Пользователи Сообщений: 24 Пол: Женский Репутация: ![]() ![]() ![]() |
Вот задачка.
Найти кол-во слов начинающихся и заканчивающихся на обнуи туже букву. Код var s:string; k,i:byte; begin readln(s); for i:=1 to length(s) do begin if (s[i-1]=' ')and (s[1]=s[i]) then k:=K+1; end; writeln('k=',k); readln; end. Что-то не идет. |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Цитата(симав @ 6.05.05 14:48) Что-то не идет. :yes: Правильно, не идет... Вот должно пойти: var |
симав |
![]()
Сообщение
#7
|
Новичок ![]() Группа: Пользователи Сообщений: 24 Пол: Женский Репутация: ![]() ![]() ![]() |
Спасибо. :p4:
|
Atos |
![]()
Сообщение
#8
|
![]() Прогрессор ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 602 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
Код var ch:char; i:byte; ... begin k:=0; ... {тут сделай обработку случаев, когда длина s равно 0 или 1} ... {else} if s[1]<>' ' then ch:=s[1]; i:=2; repeat if s[i]<>' ' then begin if s[i-1]=' ' then ch:=s[i]; if s[i+1]=' ' then if ch=s[i] then k:=k+1; end; inc(i); until (i=length(s)); if s[i]<>' ' then if ch=s[i] then k:=k+1; ... end. |
Atos |
![]()
Сообщение
#9
|
![]() Прогрессор ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 602 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
Опять я торможу с ответом...
![]() Однако, volvo, "как показало вскрытие", твой код некорректно обрабатывает случай, когда последнее слово - однобуквенное ;) |
volvo |
![]()
Сообщение
#10
|
Гость ![]() |
Цитата(Atos @ 6.05.05 15:39) "как показало вскрытие", твой код некорректно обрабатывает случай, когда последнее слово - однобуквенное ;) Да, этого я не предусмотрел ![]() ... ![]() |
симав |
![]()
Сообщение
#11
|
Новичок ![]() Группа: Пользователи Сообщений: 24 Пол: Женский Репутация: ![]() ![]() ![]() |
В фразе содержатся цифры и знаки арифметическмх операций вывести на экран результат операции.
так? Код var s,s1,s2:string; m,op,c:char; i,a,b,o,j,n:integer; begin m:=['1','2','3','4','5','6','7','8','9','0']; op:=['+','-','*','/']; readln(s); writeln(s); for i:=2 to length(s)-1 do if (s[i] in op)and (s[i-1]in m) and (s[i+1]in m) then begin j:=1; s1:=''; while (s[i-j] in m) and (i-j>0) do begin s1:=s[i-j]+s1; j:=j+1 end; j:=1; s2:=''; while (s[i+j] in m) and (i+j<=length(s)) do begin s2:=s2+s[i+j]; j:=j+1 end; val(s1,a,n);val(s2,b,n); O:=a+b; O:=a-b; O:=a*b; O:=a div b; end; writeln(a,s[i],b,'=',O,' ') end; end; end. |
volvo |
![]()
Сообщение
#12
|
Гость ![]() |
Этот бред начнет выдавать ошибки, начиная с 4-ой строки...
симав, начинайте пользоваться поиском!!! ![]() Эта тема поднималась неоднократно... Вот ОДНА из возможных реализаций: FAQ: Калькулятор |
![]() ![]() |
![]() |
Текстовая версия | 18.06.2025 15:55 |