Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

Народное голосование ПРЕМИИ РУНЕТА-2007!
Голосуем за RusFAQ.ru >>

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Pascal

Выпуск № 483
от 09.11.2007, 17:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 238, Экспертов: 49
В номере:Вопросов: 1, Ответов: 3


Вопрос № 107953: Есть след. данные в файле: "afio ao" Вывести в другой файл колличество букв, которые нужно удалить из первой строки что бы получить вторую Например, в данном случае: 2 Требования: Не использовать динам. программи...

Вопрос № 107.953
Есть след. данные в файле:
"afio
ao"
Вывести в другой файл колличество букв, которые нужно удалить из первой строки что бы получить вторую
Например, в данном случае:
2
Требования:
Не использовать динам. программирование (обе строки не превышают 100 символов)
Время выполнения: 1 сек.(доп. 2 сек.)
Место в памяти: 64 МБ
Отправлен: 04.11.2007, 10:37
Вопрос задал: Алин Сергей Владимирович (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 12)

Отвечает: Coupler
Здравствуйте, Алин Сергей Владимирович!
Этот вариант решения неправильный, т.к. не учитывает порядок.
program q107953;
var fin, fout: text;
var s1, s2: string[100];
r,i:integer;
begin
assign(fin, 'in.dat');
reset(fin);
readln(fin, s1);
readln(fin, s2);
close(fin);
r:=length(s1) - length(s2);{предполагаем, что s2 можно составить из s1}
for i:=1 to length(s2) do
if pos(s2[i],s1)<1 then r:=-1;{если это не так, то возвращаем -1}
assign(fout, 'out.dat');
rewrite(fout);
write(fout, r);
close(fout);
end.

Вот работающий вариант:
program q107953;
var
fin, fout: text;
var
s1, s2: string[100];
r, i, j, k: integer;
begin
assign(fin, 'in.dat');
reset(fin);
readln(fin, s1);
readln(fin, s2);
close(fin);
k := 1;
r := length(s1) - length(s2);
if r < 0 then
r := -1
else
begin
for i := 1 to length(s2) do
begin
for j := k to length(s1) do
begin
if s2[i] = s1[j] then
begin
k := j + 1;
break;
end;
r := -1;
break;
end;
end;
end;
assign(fout, 'out.dat');
rewrite(fout);
write(fout, r);
close(fout);
end.
Ответ отправил: Coupler (статус: Практикант)
Ответ отправлен: 04.11.2007, 11:30
Оценка за ответ: 5
Комментарий оценки:
классно! ответьте на вопрос на мине форуме, плЗ!

Отвечает: Gh0stik
Здравствуйте, Алин Сергей Владимирович!

Обращаю Ваше внимание на то, что предыдущий ответ не верный!!!. Проверьте его работу на таком наборе данных:
fhw
hf


Очевидно что ответ должен быть -1, поскольку нельзя получить из строки1 строку2 путем удаления из нее символов.

Привожу свое решение:
var i,j,k:word;
    s1,s2:string;
begin
  assign(input,'data.txt');
  reset(input);
  assign(output,'rez.txt');
  readln(input,s1);
  read(input,s2);
  close(input);
  k:=0;
  j:=1;
  assign(output,'rez.txt');
  rewrite(output);
  if length(s1) < length(s2) {если длина строки2 больше строки1, то решать дальше нет смысла}
     then writeln(output,-1)
     else
     begin
        for i:=1 to length(s2) do {последовательно ищем каждый символ строки2 в строке1 с учетом их порядка}
        begin
            while j<=length(s1) do
          if s2[i]=s1[j]
                  then begin inc(k); break; end
                 else inc(j);
        end;
        if k=length(s2)
           then write(output,length(s1)-k)
           else writeln(output,-1);
     end;
  close(output);
end.


Good Luck!!!
---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессор)
Украина, Славянск
Организация: Славянский государственный педагогический университет (Кафедра алгебры)
ICQ: 289363162
----
Ответ отправлен: 04.11.2007, 11:57
Оценка за ответ: 5
Комментарий оценки:
хороши те, кто замечают ошибки других. вы один из них

Отвечает: Артём1983
!!!
Здравствуйте, Алин Сергей Владимирович!
Опишу своё решение.
Я записываю в "выходной " файл разность длинн первои и второй строк.
Смотрите код в приложении.

Ответ неверный, смотрите пояснения в мини-форуме либо ответ эксперта Gh0stik.
-----
∙ Отредактировал: Gh0stik (Профессор)
∙ Дата редактирования: 04.11.2007, 16:57

Приложение:

---------
Программирование - дело Путное!

Ответ отправил: Артём1983 (статус: 6-ой класс)
Ответ отправлен: 04.11.2007, 14:51


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.62.0 от 08.11.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное