IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Строки
Flo
сообщение 18.12.2005 22:17
Сообщение #1


Гость






Программа выводит только длину слова... что необходимо добавить, чтобы выводилось все слово?
препод вот что написала:
если S[i]<>' ', то B:=B+copy(s,i,1)
n=1
если s[i]=' ' то n:=n

я никак не пойму, что она имела в виду..
заранее спасибо!!

var

i,n,max:integer;

s:string;

function wordlen(i:integer):integer;

var

n:integer;

begin

n:=0;

while (s[i]<>’ ‘) and (i<=length(s)) do

begin

i:=i+1; n:=n+1;

end;

wordlen:=n;

end;


begin

write(‘vvedite stroky:’);

readln(s);

i:=1; n:=0; max:=0;

while (i<=length(s)) do

begin

if s[i]<>’ ‘ then

begin

n:=n+1;

if wordlen(i)>max then max:=wordlen(i);

i:=i+wordlen(i);

end

else i:=i+1;

end;

writeln(max);

readln;

end.
 К началу страницы 
+ Ответить 
Анна
сообщение 18.12.2005 22:40
Сообщение #2


Бывалая
***

Группа: Пользователи
Сообщений: 290
Пол: Женский
Реальное имя: Анютка

Репутация: -  7  +


Может я чего не понимаю, но что мешает написать
writeln (s);
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 18.12.2005 22:48
Сообщение #3


Гость






Цитата
что мешает написать
writeln (s);
То, что тогда будет распечатана вся строка, а нужно - только самое длинное слово...

Flo, нужно запоминать позицию, с которой начинается слово, если его длина больше текущей максимальной:
var

i, n, max, start:integer;
s: string;

function wordlen(i:integer):integer;
var
n:integer;

begin
n:=0;
while (s[i]<>' ') and (i<=length(s)) do begin
i:=i+1; n:=n+1;
end;
wordlen:=n;
end;


begin
write('vvedite stroky:'); readln(s);
i:=1; n:=0; max:=0;

while (i<=length(s)) do begin
if s[i]<>' ' then begin
n:=n+1;
if wordlen(i)>max then begin
max:=wordlen(i); start := i;
end;
i:=i+wordlen(i);
end
else i:=i+1;

end;

writeln(max, ' --> ', copy(s, start, max));

readln;

end.
 К началу страницы 
+ Ответить 
Flo
сообщение 18.12.2005 22:56
Сообщение #4


Гость






спасибо, теперь все получается
 К началу страницы 
+ Ответить 
Flo
сообщение 18.12.2005 23:02
Сообщение #5


Гость






а не подскажете алгоритм решения вот какой задачки.. определить какие символы и сколько раз встречаются в тексте? что за чем мне нужно сделать
 К началу страницы 
+ Ответить 
volvo
сообщение 18.12.2005 23:09
Сообщение #6


Гость






Нужно зайти вот сюда и посмотреть:
Задача на обработку текста
 К началу страницы 
+ Ответить 
Flo
сообщение 18.12.2005 23:44
Сообщение #7


Гость






а если мне не нужен массив? как тогда?
 К началу страницы 
+ Ответить 
volvo
сообщение 19.12.2005 0:31
Сообщение #8


Гость






Цитата
определить какие символы и сколько раз встречаются в тексте?
Или используешь массив и делаешь задание просто, или ... Ну, скажем, идешь и начинаешь изобретать свой велосипед...
 К началу страницы 
+ Ответить 
Flo
сообщение 19.12.2005 0:39
Сообщение #9


Гость






должно получится примерно такое?
const
s: string = 'btuukdsfghkkkkkkl';
var
counter: array[char] of byte;
max: byte;
var i: integer;
begin
max := 0;
for i := 1 to length(s) do
begin
inc(counter[s[i]]);
if max < counter[s[i]] then
max := counter[s[i]]
end;
for i := 1 to 255 do
if counter[chr(i)] = max then
write(chr(i), ' ');
writeln(max);
end.
 К началу страницы 
+ Ответить 
volvo
сообщение 19.12.2005 2:18
Сообщение #10


Гость






По ссылке, которую я привел, находится полностью работоспособная программа. Как только в ту программу начинают вноситься изменения - это уже не моя программа, и в правильности/неправильности ее работы разбирайтесь сами...

Тем более, что спрашивалось -
Цитата
определить какие символы и сколько раз встречаются в тексте?
О том, какой символ встречается максимальное число раз не было и речи... Сначала решаем, ЧТО делать, и только потом - КАК...
 К началу страницы 
+ Ответить 
Flo
сообщение 19.12.2005 8:32
Сообщение #11


Гость






Спасибо, только не мог бы ты объяснить мне кое-что.. не совсем понимаю, что происходит здесь:
 for ch := #32 to #255 do
for i := 1 to cnt[ch] do write(ch);
почему начинаем с 32, а не с 1?
и что мне надо добавить, чтобы он мне не просто выводил символы, но еще и их количество?
 К началу страницы 
+ Ответить 
Flo
сообщение 19.12.2005 21:49
Сообщение #12


Гость






Помогите, плиз!!!!
 К началу страницы 
+ Ответить 
Анна
сообщение 19.12.2005 23:10
Сообщение #13


Бывалая
***

Группа: Пользователи
Сообщений: 290
Пол: Женский
Реальное имя: Анютка

Репутация: -  7  +


Попробуй в паскале ввести этот код и запустить:
Var I : Integer;
Begin
For I:=0 To 255 Do Write(Chr(I));
End.

Посмотри какие символы стоят до #32. Сразу всё понятно станет smile.gif.

Чтобы выводило кол-во символов - включи счётчик good.gif

inc(J)


Сообщение отредактировано: Анна - 19.12.2005 23:12
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 20.12.2005 8:49
Сообщение #14


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Ну ты и придумала ... blink.gif volvo же сказал что велосипед изобретать - это плохо ..


var
cnt: array[char] of integer;
s: string;
i: integer;
ch: char;
begin
s := 'sdj;alskjdf;laskjdf;laksjd;lkjf;lsdk;gjlskd;jgskgf';
for i := 1 to length(s) do
inc(cnt[s[i]]);
for ch := #32 to #255 do
if cnt[ch] <> 0 then writeln(ch,' ',cnt[ch]);
end.


а символы с кодами #0..#31 - упрявляющие.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 19.07.2025 12:05
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"