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

Строка: Найти наиболее удаленную друг от друга пару слов в предложении

19.01.2021, 12:54. Просмотров 1677. Ответов 14

Вводится предложение, найти наиболее удаленную друг от друга пару слов. Расстояние между двумя словами равной длины – это количество букв, в которых различаются эти слова.
Данную тему находил от товарища Puporev'a, но такую не принимают, говорят можно сделать проще. Помогите пожалуйста.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.01.2021, 12:54
Ответы с готовыми решениями:

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

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

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

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

14
2050 / 935 / 373
Регистрация: 19.03.2019
Сообщений: 3,037
19.01.2021, 13:46 2
посмотрел я прошлую твою тему ( Найти пару наиболее далеко удаленных слов заданной длины )

Цитата Сообщение от MCrezo Посмотреть сообщение
Вводится предложение
ты забыл упомянуть, что ещё указывается длина слов, которые нужно найти. а это важно.

кроме того.
это
Цитата Сообщение от MCrezo Посмотреть сообщение
это количество букв, в которых различаются эти слова.
и это
Цитата Сообщение от Anastasia_S1483 Посмотреть сообщение
это количество позиций, в которых различаются эти слова
это немножко не одно и то же.

ну и последнее.
начни с простого - дано предложение и длина слова. Вывести все слова заданной длины.
Для этого тебе надо знать, чем разделены слова в предложении и написать код по разбору предложения на отдельные слова.
0
0 / 0 / 0
Регистрация: 12.01.2021
Сообщений: 28
19.01.2021, 13:49  [ТС] 3
Нет, длину слов уже указывать не надо)
Это прошлое задание было с длинной слов, его я сделал
0
2050 / 935 / 373
Регистрация: 19.03.2019
Сообщений: 3,037
19.01.2021, 14:13 4
Цитата Сообщение от MCrezo Посмотреть сообщение
Нет, длину слов уже указывать не надо)
Это прошлое задание было с длинной слов, его я сделал
хорошо.
ну тогда будь добр корректно описать условия задания.

Цитата Сообщение от MCrezo Посмотреть сообщение
Расстояние между двумя словами равной длины..
а расстояние между двумя словами НЕ РАВНОЙ длины чему равно?
0
0 / 0 / 0
Регистрация: 12.01.2021
Сообщений: 28
19.01.2021, 14:19  [ТС] 5
судя по всему, одинаковым буквам слов)
0
2050 / 935 / 373
Регистрация: 19.03.2019
Сообщений: 3,037
19.01.2021, 14:58 6
Цитата Сообщение от MCrezo Посмотреть сообщение
судя по всему, одинаковым буквам слов)
прости, я не понимаю, что это за "судя по всему"..
давай по простому.
во тебе предложение:
Цитата Сообщение от MCrezo Посмотреть сообщение
найти наиболее удаленную друг от друга пару слов
насколько удалены друг от друга в этом предложении слова
найти <-> наиболее ?
найти <-> удаленную ?
найти <-> друг ?
найти <-> от ?
найти <-> друга ?
найти <-> пару ?
найти <-> слов ?

(с обоснованием рассчёта, разумеется)
0
0 / 0 / 0
Регистрация: 12.01.2021
Сообщений: 28
19.01.2021, 15:10  [ТС] 7
*Слова задаются одинаковый длинны, в данном случае наиболее удалены друг от друга будет *друг* и *слов*
0
2050 / 935 / 373
Регистрация: 19.03.2019
Сообщений: 3,037
19.01.2021, 15:44 8
Цитата Сообщение от MCrezo Посмотреть сообщение
Слова задаются одинаковый длинны
оп-па.
А откуда эта фраза взялась? Про одинаковую длину?
Все слова в предложении одинаковой длины?
А если слова не одинаковой длины - что должна делать программа?

Цитата Сообщение от MCrezo Посмотреть сообщение
данном случае наиболее удалены друг от друга будет *друг* и *слов*
эти слова на расстоянии 4 позиции (буквы), так?

а в этом же предложении слова "найти" и "друга" имеют равную длину и находятся на расстоянии 5 позиции.
Так, может быть, эти слова наиболее удалены друг от друга?
0
0 / 0 / 0
Регистрация: 12.01.2021
Сообщений: 28
19.01.2021, 15:44  [ТС] 9
Да, верно
0
2050 / 935 / 373
Регистрация: 19.03.2019
Сообщений: 3,037
19.01.2021, 16:38 10
Цитата Сообщение от MCrezo Посмотреть сообщение
Да, верно
отлично. разобрались. (хоть ты так и не признался, откуда взялось уточнение "Слова задаются одинаковый длинны" и ЧТО оно означает!!!)

давай тогда код
Цитата Сообщение от MCrezo Посмотреть сообщение
прошлое задание было с длинной слов, его я сделал
и я попробую его доработать под новые требования.
0
0 / 0 / 0
Регистрация: 12.01.2021
Сообщений: 28
19.01.2021, 16:48  [ТС] 11
Цитата Сообщение от Puporev Посмотреть сообщение
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
Модератор
62497 / 46687 / 32180
Регистрация: 18.05.2008
Сообщений: 112,951
19.01.2021, 17:03 12
Ответил в той теме.
0
Модератор
8325 / 4098 / 2846
Регистрация: 17.08.2012
Сообщений: 13,090
19.01.2021, 20:52 13
И я привёл своё решение в той теме.
0
mr-Crocodile
22.01.2021, 09:41
  #14

Не по теме:

Цитата Сообщение от Cyborg Drone Посмотреть сообщение
И я привёл своё решение в той теме.
Cyborg Drone, что мне подсказывает, что лучше бы это было сделано в этой теме. Потому что у ТС задача чуть другая, чем в той теме.

0
Модератор
8325 / 4098 / 2846
Регистрация: 17.08.2012
Сообщений: 13,090
23.01.2021, 20:25 15
mr-Crocodile, да, лучше в этой.

MCrezo, посмотрите Ваше первое сообщение в этой теме. Сами же написали, что
Цитата Сообщение от MCrezo Посмотреть сообщение
Расстояние между двумя словами равной длины
Но вот в этой теме: Найти пару наиболее далеко удаленных слов заданной длины просите уже между словами какой попало длины.

В задании явно не указано, что нужно найти расстояние между словами. Собственно, расстояние это и не нужно совсем. Иными словами, для слов какой попало длины нужно просто вывести первое и последнее слово.

На основе моей программы из упомянутой темы:
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
var
  s: string;
  i, pmin, nmin, pmax, nmax: integer;
begin
  writeln('Введите строку из слов, разделённых пробелами:');
  readln(s);
  s := ' ' + s + ' ';
  pmin := 0;
  nmin := 0;
  pmax := 0;
  nmax := 0;
  for i := 2 to length(s) - 1 do
    if (s[i-1] = ' ') and (s[i] <> ' ') then
      if pmin = 0 then pmin := i
      else pmax := i
    else
      if (s[i] <> ' ') and (s[i+1] = ' ') then
        if nmin = 0 then nmin := i - pmin + 1
        else nmax := i - pmax + 1;
  if pmin + pmax = 0 then write('Строка не содержит слов')
  else
    if pmax = 0 then write('В строке только одно слово')
    else
      begin
        writeln('Наиболее удалённые слова:');
        write('"', copy(s, pmin, nmin), '" и "', copy(s, pmax, nmax), '"')
      end;
  readln
end.
Можно пойти другим путём: просто найти первое и последнее слово:
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
var
  s: string;
  p1, n1, p2, n2: integer;
begin
  writeln('Введите строку из слов, разделённых пробелами:');
  readln(s);
  s := s + ' ';
  p1 := 1;
  while (s[p1] = ' ') and (p1 < length(s)) do inc(p1);
  if p1 = length(s) then writeln('Строка не содержит слов')
  else
    begin
      n1 := p1;
      while s[n1+1] <> ' ' do inc(n1);
      n2 := length(s);
      while s[n2] = ' ' do dec(n2);
      if n2 = n1 then writeln('В строке только одно слово')
      else
        begin
          p2 := n2;
          while s[p2-1] <> ' ' do dec(p2);
          writeln('Наиболее удалённые слова:');
          write('"', copy(s, p1, n1 - p1 + 1), '" и "', copy(s, p2, n2 - p2 + 1), '"')
        end
    end;
  readln
end.
Если всё же нужно вывести расстояние, то определитесь, между чем и чем это самое расстояние: между началами слов или между концом первого слова и началом последнего. Замечание: вряд ли это расстояние измеряется в буквах, скорее всего, оно измеряется в символах.

Добавлено через 1 час 10 минут
Похоже, что я понял задание совершенно неправильно. Под расстоянием между словами в данном задании понимается не пространственное положение слов, а их степень различия. Например, расстояние между словами "слово" и "слово" равно 0, а между словами "слово" и "слова" расстояние равно 1 (отличаются на 1 букву).

MCrezo,

Возьмём два слова, "слово" и "волос". Эти два слова являются анаграммой, то есть, содержат равные количества одинаковых букв (по одному "с", "л", "в" и по два "о"). Чему равно расстояние между указанными словами, нулю или пяти?

Если пяти, то нужно считать количество различий в одинаковых позициях. Тогда как определять расстояние между словами различной длины? Дополнять короткое слово пробелами? Если так, то куда вставлять пробелы: перед первой буквой или после последней? Или обрезать длинное слово? Или считать, что расстояние между словами различной длины равно нулю?

Если расстояние между словами "слово" и "волос" равно нулю, то нужно вычислять мощность произведения множеств. В этом случае ещё один вопрос: имеется ввиду конечное счётное множество, или конечное счётное мультимножество? Например, чему равно расстояние между словами "класс" и "ласка", нулю или единице? (различие в количестве букв "с" и "а").

И ещё один вопрос. Строчные и прописные буквы считать различными или одинаковыми?
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.01.2021, 20:25

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

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

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

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

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

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

В заданном предложении найти пару наиболее далеко удаленных слов заданной длины.
Помогите решить задачу на С++.


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

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

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