powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Pascal
7 сообщений из 7, страница 1 из 1
Pascal
    #36357669
Ivan85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! есть задание заданы два текста. Каждый текст составлен из попарно различных
слов. Определить, можно ли получить второй текст из первого
удалением некоторых его символов.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
uses crt;
var i,j:integer;
mas:array[ 1 .. 10 ] of string; 
begin
writeln('Add text mas ');
readln(mas[ 1 ]); // первый текст
writeln('Add text mas2 ');
readln(mas[ 2 ]); // второй текст
for i:= 1  to length(mas[ 1 ])- 1  do //длина mas[ 1 ]
for j:=i+ 1  to length(mas[ 2 ]) do // длина mas[ 2 ]
if mas[ 1 ]=mas[ 2 ] then writeln('Not elements for delete') //если они равны то выводим
else if mas[ 1 ]<>mas[ 2 ] then //если не равны то тут как получить второй текст из первого удалением некоторых его символов
Зарание спасибо!
...
Рейтинг: 0 / 0
Pascal
    #36357966
Ivan85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
думаю что надо проитись циклом по второму тексту, если есть символы из первого то их оставить , а остальные удалить потом снова проверить по длинам совпадают или нет. только как это реализовать непойму.
...
Рейтинг: 0 / 0
Pascal
    #36359231
vino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ivan85, "можно ли получить второй текст из первого удалением некоторых его символов " равносильно "последовательно проверять наличие букв первого массива во втором", но, конечно, программа должна быть чуть другая
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
uses crt;
var i,j,k:integer;
mas:array[ 1 .. 10 ] of string; 
begin
writeln('Add text mas ');
readln(mas[ 1 ]); // первый текст
writeln('Add text mas2 ');
readln(mas[ 2 ]); // второй текст
j :=  0 ; // пока не искали
k :=  0 ; // пока без пропусков
for i:= 1  to length(mas[ 1 ]) do //длина mas[ 1 ]
 j:=j+ 1 ; // смотрим с очередного символа
 while j <= length(mas[ 2 ]) do // длина mas[ 2 ]
 begin
  if mas[i]=mas[j] then break; //если они равны то нашли символ
  k:=k+ 1 ; // учли пропуск
  j:=j+ 1 ; // перешли к следующей букве
 end;
 if j > length(mas[ 2 ]) then // mas[ 2 ] исчерпан? значит очередной символ не нашли
  writeln('Can''t convert mas to mas2 with delete only!') // выводим отказ
 else //если не равны то тут как получить второй текст из первого
  writeln('Can convert mas to mas2 with delete ', k,' chars') // можно, с удалением k символов
end.
Однако, в условии что-то говориться о словах ? Может, и перестановка слов допускается, а не только удаление некоторых символов?
...
Рейтинг: 0 / 0
Pascal
    #36359248
vino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
опа, эт я слишком рано отправил
Код: plaintext
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.
uses crt;
var i,j,k:integer;
mas:array[ 1 .. 10 ] of string; 
begin
writeln('Add text mas ');
readln(mas[ 1 ]); // первый текст
writeln('Add text mas2 ');
readln(mas[ 2 ]); // второй текст
j :=  0 ; // пока не искали
k :=  0 ; // пока без пропусков
for i:= 1  to length(mas[ 1 ]) do //длина mas[ 1 ]
 j:=j+ 1 ; // смотрим с очередного символа
 while j <= length(mas[ 2 ]) do // длина mas[ 2 ]
 begin
  if mas[ 1 ][i]=mas[ 2 ][j] then break; //если они равны то нашли символ
  k:=k+ 1 ; // учли пропуск
  j:=j+ 1 ; // перешли к следующей букве
 end;
 if j > length(mas[ 2 ]) then // mas[ 2 ] исчерпан? значит очередной символ не нашли
 begin
  writeln('Can''t convert mas to mas2 with delete only!'); // выводим отказ
  exit
 end;
end;
writeln('Can convert mas to mas2 with delete ', k,' chars') // можно, с удалением k символов
end.
...
Рейтинг: 0 / 0
Pascal
    #36359508
Ivan85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vino, да возможно тут еще надо учитывать пробелы и перестановку.
ввожу
mas case
mas2 ca
то выводит 'Can''t convert mas to mas2 with delete only!'
если наоборот вводить то выводит 'Can convert mas to mas2 with delete 0 chars'


делал вот так но чет вообще не то
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
uses crt;
var h,i,j,k:integer;
mas:array[ 1 .. 10 ] of string;
begin
k:= 0 ;
writeln('Add text mas ');
readln(mas[ 1 ]);
writeln('Add text mas2 ');
readln(mas[ 2 ]);
for i:= 1  to length(mas[ 1 ])- 1  do
for j:=i+ 1  to length(mas[ 2 ]) do
if mas[ 1 ]<=mas[ 2 ] then
for h:= 0  to length(mas[ 2 ]) do  h:=h+ 1 ;
if mas[ 2 ] = mas[ 1 ] [k] then k:=k+ 1 
else mas[ 1 ] := '_';
if k = length(mas[ 1 ]) then writeln(mas[ 2 ])
else writeln('No match');
end.
...
Рейтинг: 0 / 0
Pascal
    #36359587
vino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ivan85, да, я чет проглядел, что mas[2] с mas[1] надо переставить. Само решение-то почти готово
Код: plaintext
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 i,j,k,l:integer;
mas:array[ 1 .. 2 ] of string; 
begin
writeln('Add text mas ');
readln(mas[ 1 ]); // первый текст
writeln('Add text mas2 ');
readln(mas[ 2 ]); // второй текст
j :=  0 ; // пока не искали
k :=  0 ; // пока без пропусков
l := length(mas[ 1 ]); // длина mas[ 1 ]

for i:= 1  to length(mas[ 2 ]) do //длина mas[ 2 ], как наименьшего текста
 j:=j+ 1 ; // смотрим с очередного символа в mas[ 1 ]
 while j <= l do
 begin
  if mas[ 2 ][i]=mas[ 1 ][j] then
   break; //если они равны, то нашли символ
  k:=k+ 1 ; // учли пропуск
  j:=j+ 1 ; // перешли к следующему символу
 end;
 if j > l then // mas[ 1 ] исчерпан? значит - очередной символ не нашли
 begin
  writeln('Can''t convert mas to mas2 with delete only!'); // выводим отказ
  exit
 end;
end;
writeln('Can convert mas to mas2 with delete ', k,' chars') // можно, с удалением k символов
end.
тут, кстати, возможна оптимизация циклов при большой длине строк
...
Рейтинг: 0 / 0
Pascal
    #36362186
Ivan85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vino, Спасибо разобрался!
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Pascal
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]