2 / 2 / 1 Регистрация: 15.01.2011 Сообщений: 45 |
|
1 |
|
задача на строки найти самое короткое слово26.04.2012, 19:40. Показов 22279. Ответов 7
Подскажите как решить эту задачу на паскале с помощью строк.
1 |
КонецСвета Почетный модератор 7966 / 3937 / 2464 Регистрация: 30.10.2011 Сообщений: 5,377 |
||||
26.04.2012, 19:51 |
2 |
|||
2 |
2 / 2 / 1 Регистрация: 15.01.2011 Сообщений: 45 |
|
26.04.2012, 20:11 [ТС] |
3 |
спасибо а если не сложно можно с объяснениями что за что каждая строка отвечает
0 |
КонецСвета Почетный модератор 7966 / 3937 / 2464 Регистрация: 30.10.2011 Сообщений: 5,377 |
||||
26.04.2012, 21:30 |
4 |
|||
1 |
Emilg 2 / 2 / 1 Регистрация: 15.01.2011 Сообщений: 45 |
||||
26.04.2012, 21:49 [ТС] |
5 |
|||
спасибо большое у меня еще вопрос если несложно сможете посмотреть эту задачу тоже сделал непойму почему не работает
Миниатюры
0 |
Почетный модератор 7966 / 3937 / 2464 Регистрация: 30.10.2011 Сообщений: 5,377 |
|
26.04.2012, 21:51 |
6 |
Emilg, с математикой — туго… и лучше выложи эту программу в основной своей теме с этой задачей — и шансов больше, и правила соблюдены..
1 |
2 / 2 / 1 Регистрация: 15.01.2011 Сообщений: 45 |
|
27.04.2012, 05:16 [ТС] |
7 |
подскажите пможет что-нибудь получится
1 |
0 / 0 / 1 Регистрация: 16.12.2015 Сообщений: 10 |
|
11.12.2016, 21:04 |
8 |
А не подскажите, как сделать так, чтобы программа удваивала самое короткое слово и выводила результат?
0 |
uses crt; var s,p,s1,s2:string; min,len,i:integer; begin clrscr; writeLn('Vvedite stroku: ');//строка может идти и после точки readLn(s); writeln; p:=copy(s,1,pos('.',s)-1)+' ';//выделяем первое предложение до точки, но без нее и добавляем пробел s1:=''; min:=255;//за мин берем самое возможно длинное слово while pos(' ',p) > 0 do //пока в предложении есть пробелы begin len:=pos(' ',p)-1; //определяем длину слова от начала до пробела s1:=copy(p,1,len);//запоминаем это слово if len < min then //если оно короче предыдущего короткого begin s2:=s1; //запоминаем его еще раз min:=len;//запоминаем его длину end; delete(p,1,pos(' ',p));//удаляем просмотренное слово end; write(s2);//выводим самое короткое readLn; end.
Прочтите прежде чем задавать вопрос!
1. Заголовок темы должен быть информативным. В противном случае тема удаляется …
2. Все тексты программ должны помещаться в теги [code=pas] … [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. «FAQ«, если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение — только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы — на PM!
6. Одна тема — один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Самое короткое слово в строке |
28.10.2005 0:41 Сообщение |
|
Новичок
Группа: Пользователи Репутация: 0 |
Задача такова: Прикрепленные файлы |
|
|
Altair |
28.10.2005 0:51 Сообщение |
Ищущий истину
Группа: Пользователи Репутация: 45 |
To: art88 что-то ты намудрил var хотя и я не старался ——————— Помогая друг другу, мы справимся с любыми трудностями! |
|
|
volvo |
28.10.2005 1:11 Сообщение |
Гость |
To: Altair var |
|
|
art88 |
29.10.2005 21:40 Сообщение |
Новичок
Группа: Пользователи Репутация: 0 |
Уважаемые Altair и volvo, извините, но ваши программы не совсем корректно решают посавленную задачу! Прикрепленные файлы |
|
|
Altair |
29.10.2005 21:53 Сообщение |
Ищущий истину
Группа: Пользователи Репутация: 45 |
Проверь так те пойдет? program WordLen; но кстати неправ ты. Это твоя прога не по заданию. Она не дает понятие какое слово короткое она длинну мин. выводит а это разные вещи — длинна и слово. ——————— Помогая друг другу, мы справимся с любыми трудностями! |
|
|
volvo |
29.10.2005 22:06 Сообщение |
Гость |
Цитата Может одну из наших прог доделать? Легко… В моей программе достаточно добавить счетчик слов, и если он будет равен 0 или 1 то выдавать сообшение об ошибке… |
|
|
volvo |
29.10.2005 23:16 Сообщение |
Гость |
art88, program WordLen; |
|
|
art88 |
30.10.2005 0:42 Сообщение |
Новичок
Группа: Пользователи Репутация: 0 |
Я наверное вас уже достал, но всё-таки. var Спасибо! |
|
|
volvo |
30.10.2005 0:45 Сообщение |
Гость |
Я не понял, тебя твоя же чуть-чуть подправленная программа (из поста №7) уже НЕ устраивает? Тогда объясни, чем… |
|
|
art88 |
30.10.2005 2:29 Сообщение |
Новичок
Группа: Пользователи Репутация: 0 |
volvo, извини, просто эту задачу мне надо сдавать(я учусь в университете), а как оказалось при решении этой задачи нельзя использвать процедуры. |
|
|
volvo |
30.10.2005 2:39 Сообщение |
Гость |
Цитата при решении этой задачи нельзя использвать процедуры. Я же говорил, что легче в мою программку добавить несколько строк var |
|
|
PORTUGAL |
7.02.2006 1:28 Сообщение |
Новичок
Группа: Пользователи Репутация: 0 |
А как сделать что бы вместо длины самого короткого слова, выводилось само слово? |
|
|
klem4 |
7.02.2006 1:38 Сообщение |
Perl. Just code it!
Группа: Пользователи Репутация: 44 |
——————— perl -e ‘print for (map{chr(hex)}(«4861707079204E6577205965617221″=~/(.{2})/g)), «n»;’ |
|
|
PORTUGAL |
7.02.2006 2:05 Сообщение |
Новичок
Группа: Пользователи Репутация: 0 |
Цитата(klem4 @ 6.02.2006 22:38) Выдает — invalid variabe referense |
|
|
volvo |
7.02.2006 2:07 Сообщение |
Гость |
WriteLn( copy(s,start,min) ); такое выдает? |
|
|
greenday |
9.04.2006 3:07 Сообщение |
Гость |
Сорри, что поднял такую старую тему, просто меня интерисует тоже самое, т.е. поиск самого короткого слова в строке. я решал не много по другому, у мен получилось вот что: Код program MINWORD; но это выводит только длину мин. слова. про copy я знаю, но не могу понять куда и как приписать счетчик чтобы он позицию считал. вообщем, помогите плиз, доделать мою прогу. надо чтобы выводил именно слово. |
|
|
volvo |
9.04.2006 3:30 Сообщение |
Гость |
Цитата(greenday @ 8.04.2006 23:07) про copy я знаю, но не могу понять куда и как приписать счетчик чтобы он позицию считал. Плохой способ избрал вообще-то. Удаляешь символы из строки — строку придется дублировать. Ну, как знаешь: program MINWORD; |
|
|
klem4 |
9.04.2006 9:15 Сообщение |
Perl. Just code it!
Группа: Пользователи Репутация: 44 |
В принципе это можно исправить, запихнуть в процедуру и передавать строку не черерез var параметр … Еу и строку соответственно глобально не описывать ——————— perl -e ‘print for (map{chr(hex)}(«4861707079204E6577205965617221″=~/(.{2})/g)), «n»;’ |
|
|
Гость |
9.04.2006 13:28 Сообщение |
Гость |
to klem4 к сожалению, нас процедурам не учили и по-этому ими пользоваться нельзя. |
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
Связь с администрацией: bu_gen в домене octagram.name
uses crt; const rz=['.',',',';',':','?','!']; var s,s1,sk:string; len,k,i,ik,f:byte; begin clrscr; writeln('Введите строку из слов, отделеннvх пробелами:'); readln(s); for i:=1 to length(s) do{заменим разделители на пробелы} if s[i] in rz then s[i]:=' '; s:=s+' ';{добавим к ней пробел} while pos(' ',s)>0 do{удалим лишние пробелы, в кавычках 2 пробела} delete(s,pos(' ',s),1);{в кавычках 2 пробела} if s[1]=' 'then delete(s,1,1);{1 удаляем} sk:='';{короткое слово, пока его нет} k:=255;{длина короткого слова} while pos(' ',s)>0 do{пока есть пробелы} begin len:=pos(' ',s)-1;{длина очередного слова} s1:=copy(s,1,len);{само слово} if len<k then{если меньше предыдущих} begin sk:=s1; {запомним} k:=len; {его длина} end; delete(s,1,pos(' ',s));{удаляем проверенное слово, следующее первое} end; writeln('Самое короткое слово: ',sk); readln end.
Var
s:string;
max,min,i,k:integer;
begin
write(‘Введите строку: ‘);
readln(s);
s:=s+’ ‘;
for i:=1 to length(s) do
begin
if s[i]=’ ‘ then
begin
if k>max then max:=k;
if (k<min) or (min=0) then min:=k;
k:=-1;
end;
k:=k+1;
end;
writeln(‘Самое короткое: ‘,min,’; самое длиное: ‘,max);
end.