1 / 1 / 0
Регистрация: 11.09.2008
Сообщений: 21
|
|
1 | |
Строчный массив!11.09.2008, 00:06. Показов 1597. Ответов 2
Метки нет Все метки)
(
Даны два предложения. Найти самое короткое из слов первого предложения,которого нет во втором предложении.
В этом плохо понимаю. Если не сложно запишите в коде пояснения.
0
|
|
11.09.2008, 00:06 | |
Ответы с готовыми решениями:
2
Строчный тип данных Строчный калькулятор
Строчный массив |
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
|
|
11.09.2008, 09:41 | 2 |
Поскольку мы не знаем, что за предложения, то должны предусмотреть что в них могут быть разные знаки препинания и лишние пробелы, все это нам надо удалить и оставить только слова, разделенные одним пробелом.
Чтобы не писать по два раза код для обоих предложений, оформим форматирование предложений и превращение их в массивы слов в процедуру Format. Код
[FONT='Courier New CYR']uses[FONT='Courier New CYR']crt[/FONT][FONT='Courier New CYR'];[/FONT] [FONT='Courier New CYR']const[/FONT][FONT='Courier New CYR']zp[/FONT][FONT='Courier New CYR']=['.',',',':',';','?','!'];{множество символов – знаки препинания}[/FONT] [FONT='Courier New CYR']type mas=array[1..100]of string;[/FONT] [FONT='Courier New CYR']var[/FONT][FONT='Courier New CYR']s[/FONT][FONT='Courier New CYR']1,[/FONT][FONT='Courier New CYR']s[/FONT][FONT='Courier New CYR']2,[/FONT][FONT='Courier New CYR']bf[/FONT][FONT='Courier New CYR']:[/FONT][FONT='Courier New CYR']string[/FONT][FONT='Courier New CYR']; {2 предложения и буфер для сортировки}[/FONT] [FONT='Courier New CYR']m[/FONT][FONT='Courier New CYR']1,[/FONT][FONT='Courier New CYR']m[/FONT][FONT='Courier New CYR']2:[/FONT][FONT='Courier New CYR']array[/FONT][FONT='Courier New CYR'][1..100][/FONT][FONT='Courier New CYR']of[/FONT][FONT='Courier New CYR']string[/FONT][FONT='Courier New CYR'];{массивы слов}[/FONT] [FONT='Courier New CYR']i[/FONT][FONT='Courier New CYR'],[/FONT][FONT='Courier New CYR']j,k1,k2,n:integer;[/FONT] [FONT='Courier New CYR']procedure Format(s:string;var m:mas;var k:integer);[/FONT] [FONT='Courier New CYR']var i:integer;[/FONT] [FONT='Courier New CYR']begin[/FONT] [FONT='Courier New CYR']for i:=length(s)downto 1 do[/FONT] [FONT='Courier New CYR'] begin[/FONT] [FONT='Courier New CYR'] if s[i] in zp then delete(s,i,1); {[/FONT][FONT='Courier New CYR']удаление[/FONT][FONT='Courier New CYR']знаков[/FONT][FONT='Courier New CYR']препинания[/FONT][FONT='Courier New CYR']}[/FONT] [FONT='Courier New CYR'] while pos(' ',s)>0 do delete(s,pos(' ',s),1);{[/FONT][FONT='Courier New CYR']удаление[/FONT][FONT='Courier New CYR']лишних[/FONT][FONT='Courier New CYR']пробелов[/FONT][FONT='Courier New CYR']}[/FONT] [FONT='Courier New CYR'] end;[/FONT] [FONT='Courier New CYR']k:=1;[/FONT] [FONT='Courier New CYR']for i:=1 to length(s1) do {[/FONT][FONT='Courier New CYR']создание[/FONT][FONT='Courier New CYR']массива[/FONT][FONT='Courier New CYR']}[/FONT] [FONT='Courier New CYR'] begin[/FONT] [FONT='Courier New CYR'] if s1[i]=' 'then k:=k+1 {[/FONT][FONT='Courier New CYR']если[/FONT][FONT='Courier New CYR']пробел[/FONT][FONT='Courier New CYR'], [/FONT][FONT='Courier New CYR']то[/FONT][FONT='Courier New CYR'] +1 [/FONT][FONT='Courier New CYR']слово[/FONT][FONT='Courier New CYR']}[/FONT] [FONT='Courier New CYR']else[/FONT][FONT='Courier New CYR']m[/FONT][FONT='Courier New CYR'][[/FONT][FONT='Courier New CYR']k[/FONT][FONT='Courier New CYR']]:=[/FONT][FONT='Courier New CYR']m[/FONT][FONT='Courier New CYR'][[/FONT][FONT='Courier New CYR']k[/FONT][FONT='Courier New CYR']]+[/FONT][FONT='Courier New CYR']s[/FONT][FONT='Courier New CYR'][[/FONT][FONT='Courier New CYR']i[/FONT][FONT='Courier New CYR']] {иначе составляем очередное слово}[/FONT] [FONT='Courier New CYR'] end;[/FONT] [FONT='Courier New CYR']end;[/FONT] [FONT='Courier New CYR']begin[/FONT] [FONT='Courier New CYR']clrscr;[/FONT] [FONT='Courier New CYR']writeln('Vvedite 1-e predlozenie:');[/FONT] [FONT='Courier New CYR']readln(s1);[/FONT] [FONT='Courier New CYR']writeln('Vvedite 2-e predlozenie:');[/FONT] [FONT='Courier New CYR']readln(s2);[/FONT] [FONT='Courier New CYR']Format(s1,m1,k1);[/FONT] [FONT='Courier New CYR']Format(s2,m2,k2);[/FONT] [FONT='Courier New CYR']for[/FONT][FONT='Courier New CYR']i[/FONT][FONT='Courier New CYR']:=1 [/FONT][FONT='Courier New CYR']to[/FONT][FONT='Courier New CYR']k[/FONT][FONT='Courier New CYR']1-1 [/FONT][FONT='Courier New CYR']do[/FONT][FONT='Courier New CYR'] {сортируем первый массив по возрастанию длины слов}[/FONT] [FONT='Courier New CYR']for j:=1 to k1-1 do[/FONT] [FONT='Courier New CYR']if length(m1[j])>length(m1[j+1]) then[/FONT] [FONT='Courier New CYR'] begin[/FONT] [FONT='Courier New CYR']bf[/FONT][FONT='Courier New CYR']:=[/FONT][FONT='Courier New CYR']m[/FONT][FONT='Courier New CYR']1[[/FONT][FONT='Courier New CYR']j[/FONT][FONT='Courier New CYR']]; {обменный метод (метод "пузырька")}[/FONT] [FONT='Courier New CYR']m1[j]:=m1[j+1];[/FONT] [FONT='Courier New CYR'] m1[j+1]:=bf;[/FONT] [FONT='Courier New CYR'] end;[/FONT] [FONT='Courier New CYR']for[/FONT][FONT='Courier New CYR']i[/FONT][FONT='Courier New CYR']:=1 [/FONT][FONT='Courier New CYR']to[/FONT][FONT='Courier New CYR']k[/FONT][FONT='Courier New CYR']1 [/FONT][FONT='Courier New CYR']do[/FONT][FONT='Courier New CYR'] {смотрим по порядку все слова в первом массиве}[/FONT] [FONT='Courier New CYR']begin[/FONT] [FONT='Courier New CYR'] n:=0;[/FONT] [FONT='Courier New CYR'] for j:=1 to k2 do[/FONT] [FONT='Courier New CYR']if[/FONT][FONT='Courier New CYR']m[/FONT][FONT='Courier New CYR']1[[/FONT][FONT='Courier New CYR']i[/FONT][FONT='Courier New CYR']]=[/FONT][FONT='Courier New CYR']m[/FONT][FONT='Courier New CYR']2[[/FONT][FONT='Courier New CYR']j[/FONT][FONT='Courier New CYR']] [/FONT][FONT='Courier New CYR']then[/FONT][FONT='Courier New CYR']n[/FONT][FONT='Courier New CYR']:=[/FONT][FONT='Courier New CYR']n[/FONT][FONT='Courier New CYR']+1; {если такое слово есть во втором – увеличиваем n}[/FONT] [FONT='Courier New CYR']if[/FONT][FONT='Courier New CYR']n[/FONT][FONT='Courier New CYR']=0 [/FONT][FONT='Courier New CYR']then[/FONT][FONT='Courier New CYR'] {если нет такого слова во втором массиве, заканчиваем поиск}[/FONT] [FONT='Courier New CYR']begin[/FONT] [FONT='Courier New CYR'] writeln('Dannoe slovo: ',m1[i]);[/FONT] [FONT='Courier New CYR'] readln;[/FONT] [FONT='Courier New CYR'] exit[/FONT] [FONT='Courier New CYR'] end;[/FONT] [FONT='Courier New CYR'] end;[/FONT] [FONT='Courier New CYR']if (i=k1)and(n>0) then writeln('Takogo slova net!');[/FONT] [FONT='Courier New CYR']{[/FONT][FONT='Courier New CYR']если дошли до конца и все слова повторяются[/FONT][FONT='Courier New CYR']}[/FONT] [FONT='Courier New CYR']readln[/FONT] [FONT='Courier New CYR']end.[/FONT]
0
|
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
|
|
11.09.2008, 09:48 | 3 |
Почему-то некоторые слова "слиплись", а правка не запускается. Попробуй сам разобраться.
На всякий случай прилагаю программу. Да, забыл уточнить, в строке while pos(' ',s)>0 do delete(s,pos(' ',s),1); между апострофами по два пробела.
0
|
11.09.2008, 09:48 | |
Помогаю со студенческими работами здесь
3
Строчный массив Строчный массив
Строчный и табличный массив Строчный массив - как нужно его задавать
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |