Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 11.05.2019
Сообщений: 8
1

Найти пару наиболее далеко удаленных слов заданной длины

17.05.2019, 23:35. Просмотров 2395. Ответов 16

Расстояние между двумя словами равной длины - это количество позиций, в которых различаются эти слова. В заданном предложении найти пару наиболее далеко удаленных слов заданной длины.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.05.2019, 23:35
Ответы с готовыми решениями:

Найти среди точек пару наиболее удаленных друг от друга
Даны n точек плоскости (x1,y2),...(xn,yn). Найти среди них пару наиболее удаленных друг от друга. ...

В заданном предложении найти пару наиболее далеко удаленных слов заданной длины
Расстояние между двумя словами равной длины – это количество позиций, в которых различаются эти...

Найти пару наиболее удаленных слов заданной длины
В введеном мною предложении (на английском ) найти пару наиболее далеко удаленных слов заданною...

В массиве точек найти пару наиболее удаленных
В массиве точек найти пару наиболее удаленных. Как сделать???

16
Модератор
62552 / 46721 / 32203
Регистрация: 18.05.2008
Сообщений: 113,077
18.05.2019, 09:46 2
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
uses crt;
const rz=[' ',',','.'];//разделители слов, можно добавить в зависимости от текста
var s:string; //строка
    a:array[1..200] of string;//массив слов
    n,i,j,k,p,mx,imx,jmx:byte;
begin
writeln('Введите предложение');
readln(s);
s:=' '+s; //добавим пробел в начало для удобства
n:=0;//количество слов
i:=2;//начнем со 2 символа, 1 пробел
while i<=length(s) do
if not(s[i]in rz)and(s[i-1]in rz) then //если не разделитель, а перед ним разделитель
 begin
  inc(n); //новое слово
  a[n]:='';//будем его составлять
  j:=i;
  while (j<=length(s))and not(s[j] in rz) do//пока не разделитель
   begin
    a[n]:=a[n]+s[j];
    inc(j);
   end;
  i:=i+length(a[n]); {перешагнем через слово}
 end
else inc(i);{пропускаем разделители}
mx:=0;
for i:=1 to n-1 do
for j:=i+1 to n do
if length(a[i])=length(a[j]) then
 begin
  k:=0;
  for p:=1 to length(a[i]) do
  if a[i][p]<>a[j][p] then inc(k);
  if k>mx then
   begin
    mx:=k;
    imx:=i;
    jmx:=j;
   end;
 end;
if mx=0 then write('Нет слов одинаковой длины')
else write('Пара наиболее далеко удаленных слов: ',a[imx],',',a[jmx]);
end.
0
0 / 0 / 0
Регистрация: 12.01.2021
Сообщений: 28
14.01.2021, 12:40 3
Видел подобное решение, не принимают, говорят слишком много лишнего
0
Модератор
62552 / 46721 / 32203
Регистрация: 18.05.2008
Сообщений: 113,077
14.01.2021, 12:49 4
Так это и не Вам писали. Напишите так как Вам нужно.
0
0 / 0 / 0
Регистрация: 12.01.2021
Сообщений: 28
14.01.2021, 14:51 5
Я должен ввести длину слова и предложение, а программа должна найти в этом предложении наиболее удаленные слова заданной длины. Вроде так.
0
Модератор
62552 / 46721 / 32203
Регистрация: 18.05.2008
Сообщений: 113,077
14.01.2021, 14:55 6
Аэта программа про это
Цитата Сообщение от Anastasia_S1483 Посмотреть сообщение
Расстояние между двумя словами равной длины - это количество позиций, в которых различаются эти слова.
Так что создайте свою тему где подробно и точно изложите условие задачи, а не
Цитата Сообщение от MCrezo Посмотреть сообщение
Вроде так.
0
0 / 0 / 0
Регистрация: 12.01.2021
Сообщений: 28
19.01.2021, 16:03 7
Привет. А можно пожалуйста сделать этот код так, чтобы разделители не учитывались в нём? Грубо говоря, убрать их из тела программы. Единственным разделителем между слов является пробел.
0
Модератор
62552 / 46721 / 32203
Регистрация: 18.05.2008
Сообщений: 113,077
19.01.2021, 16:59 8
Так убери строку 2 и в строке 18 замени
Pascal
1
not(s[j] in rz)
на
Pascal
1
s[j]<>' '
1
0 / 0 / 0
Регистрация: 12.01.2021
Сообщений: 28
19.01.2021, 17:09 9
Но тогда получается еще 2 строчки, где есть несуществующая переменная.
0
Модератор
62552 / 46721 / 32203
Регистрация: 18.05.2008
Сообщений: 113,077
19.01.2021, 17:16 10
Так замени!!!!!

Добавлено через 6 минут
И стоило из-за какого-то пробела столько времени горло драть.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
uses crt;
var s:string; //строка
    a:array[1..200] of string;//массив слов
    n,i,j,k,p,mx,imx,jmx:byte;
begin
writeln('Введите предложение');
readln(s);
s:=' '+s; //добавим пробел в начало для удобства
n:=0;//количество слов
i:=2;//начнем со 2 символа, 1 пробел
while i<=length(s) do
if (s[i]<>' ')and(s[i-1]=' ') then //если не пробел, а перед ним пробел
 begin
  inc(n); //новое слово
  a[n]:='';//будем его составлять
  j:=i;
  while (j<=length(s))and (s[j]<>' ') do//пока не пробел
   begin
    a[n]:=a[n]+s[j];
    inc(j);
   end;
  i:=i+length(a[n]); {перешагнем через слово}
 end
else inc(i);{пропускаем разделители}
mx:=0;
for i:=1 to n-1 do
for j:=i+1 to n do
if length(a[i])=length(a[j]) then
 begin
  k:=0;
  for p:=1 to length(a[i]) do
  if a[i][p]<>a[j][p] then inc(k);
  if k>mx then
   begin
    mx:=k;
    imx:=i;
    jmx:=j;
   end;
 end;
if mx=0 then write('Нет слов одинаковой длины')
else write('Пара наиболее далеко удаленных слов: ',a[imx],',',a[jmx]);
end.
2
0 / 0 / 0
Регистрация: 12.01.2021
Сообщений: 28
19.01.2021, 17:27 11
Спасибо тебе огромное, во многом помог. Просто много всего навалилось)
0
Модератор
8340 / 4110 / 2850
Регистрация: 17.08.2012
Сообщений: 13,111
19.01.2021, 19:43 12
Можно покороче и без массива строк.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
var
  s: string;
  i, pmin, pmax, p, d: integer;
begin
  writeln('Введите строку из слов, разделённых пробелами:');
  readln(s);
  s := ' ' + s + ' ';
  write('Введите длину слова: ');
  readln(d);
  pmin := 0;
  pmax := 0;
  p := 2;
  for i := 2 to length(s) do
    if (s[i] <> ' ') and (s[i+1] = ' ') and (i - p + 1 = d) then
      if pmin = 0 then pmin := p
      else pmax := p
    else
      if (s[i] <> ' ') and (s[i-1] = ' ') then p := i;
  if pmin + pmax = 0 then write('Строка не содержит слов заданной длины')
  else
    if pmax = 0 then write('В строке только одно слово заданной длины: ', copy(s, pmin, d))
    else
      begin
        writeln('Наиболее удалённые слова заданной длины:');
        write(copy(s, pmin, d), ' и ', copy(s, pmax, d))
      end;
  readln
end.
1
Модератор
62552 / 46721 / 32203
Регистрация: 18.05.2008
Сообщений: 113,077
19.01.2021, 19:53 13
Цитата Сообщение от Anastasia_S1483 Посмотреть сообщение
слов заданной длины.
Я это не дочитал.
1
0 / 0 / 0
Регистрация: 12.01.2021
Сообщений: 28
19.01.2021, 21:07 14
Благодарю!

Добавлено через 13 секунд
Благодарю еще раз)
0
0 / 0 / 0
Регистрация: 12.01.2021
Сообщений: 28
21.01.2021, 18:19 15
Cyborg Drone,
Возможно я тут уже надоел всем, но есть возможно это исправить чтобы длинна слова не вводилась и количество букв не имело значение? То есть, чтобы он просто находил наиболее удаленные слова.
Грубо говоря, если есть слова *кирпич букварь два*, то кирпич и два будут наиболее удаленные. Ну или если есть цифры *9876 123 76*, то наиболее удаленные будут 9876 и 123.
0
2066 / 946 / 379
Регистрация: 19.03.2019
Сообщений: 3,065
22.01.2021, 09:40 16
извини, что бесцеремонно врываюсь в чужой разговор, но это же форум, публичное обсуждение, поэтому, могу себе позволить такое поведение.


Цитата Сообщение от MCrezo Посмотреть сообщение
есть возможно это исправить чтобы длинна слова не вводилась и количество букв не имело значение?
MCrezo, я тебе уже не однократно говорил, что для этого нужно задать правила вычисления расстояния между двумя словами. У тебя это расстояние описывается так:
Цитата Сообщение от MCrezo Посмотреть сообщение
Расстояние между двумя словами равной длины – это количество букв, в которых различаются эти слова.
слова "между словами РАВНОЙ длины" у себя в задании видишь?
Какие вопросы?

Добавлено через 4 минуты
Цитата Сообщение от MCrezo Посмотреть сообщение
Грубо говоря, если есть слова *кирпич букварь два*, то кирпич и два будут наиболее удаленные.
говоря твоим языком,
грубо говоря, объясни, как ты определил, что слова "кирпич" и "два" - наиболее удалены? Кстати, насколько удалены слова "кирпич" и "два" ?
на насколько удалены слова "букварь" и "два" ?
а слова "кирпич" и "букварь" насколько удалены?
ты хочешь, чтобы программа посчитала то, что ты сам не знаешь, как считать? это неверный подход. Во главе стоит правило рассчёта (читай - алгоритм рассчёта), вот тогда и пишется программа, когда алгоритм рассчёта известен.
А так получается - пойди туда, не знаю куда, принеси то, не знаю, что.
0
Модератор
8340 / 4110 / 2850
Регистрация: 17.08.2012
Сообщений: 13,111
23.01.2021, 19:29 17
Ответил в теме Строка: Найти наиболее удаленную друг от друга пару слов в предложении.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.01.2021, 19:29

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Определить пару наиболее удаленных друг от друга точек
Четыре точки заданны координатами А(4,8,2) ; В(-6,5,I.2) ; С(-3,7,-4.5) ; D(7,8,2). Определить...

Определить пару наиболее удаленных друг от друга окружностей
помогите решить задачу. На плоскости задано n произвольно расположенных окружностей. Определить...

Определить пару наиболее удаленных друг от друга позиций массива
Определить пару наиболее удаленных друг от друга позиций массива, в которых располагаются...

Строка: Найти количество слов заданной длины
Дана строка символов, состоящая из нулей, единиц и пробелов. Группы нулей и единиц, разделенные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.