Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2009, 15:42   #11
Паскалька^^
Пользователь
 
Регистрация: 25.11.2008
Сообщений: 53
По умолчанию

Вообщем я пока что написала для 2х первых случаев код...
только что-то он не очень правильно работает...никак не могу ошибку обнаружить(
Код:
Program P3;
const
    n=20;
var
    a,b:string[20];
    i,j,k:integer;
    del1,fin:string[20];
    del,ch:integer;
begin
    writeln ('Vvedite nachalnoe slovo',a);
    read(a);
    writeln ('Vvedite konechnoe slovo',b);
    read(b);
    if length(a)<length(b) then
       writeln ('Preobrazovanie nevozmozhno')
       else
       if a=b then
          ch:=0;
          del1:=a;
          fin:=b;
          del:=0;
          begin
             for i:=1 to length(a) do
                for j:=1 to length(b) do
                begin
                   begin
                   if a[i]=b[j] then
                   ch:=ch+1;
                   end;
             end;
       writeln('Delete -',del,', Change -',ch,', After delete -',del1,', Final -',fin);
    end;
end.
Паскалька^^ вне форума Ответить с цитированием
Старый 13.11.2009, 15:59   #12
LeBron
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 680
По умолчанию

Цитата:
Сообщение от Паскалька^^ Посмотреть сообщение
Вообщем я пока что написала для 2х первых случаев код...
только что-то он не очень правильно работает...никак не могу ошибку обнаружить(
Код:
Program P3;
const
    n=20;
var
    a,b:string[20];
    i,j,k:integer;
    del1,fin:string[20];
    del,ch:integer;
begin
    writeln ('Vvedite nachalnoe slovo',a);
    read(a);
    writeln ('Vvedite konechnoe slovo',b);
    read(b);
    if length(a)<length(b) then
       writeln ('Preobrazovanie nevozmozhno')
       else
       if a=b then
          ch:=0;
          del1:=a;
          fin:=b;
          del:=0;
          begin
             for i:=1 to length(a) do
                for j:=1 to length(b) do
                begin
                   begin
                   if a[i]=b[j] then
                   ch:=ch+1;
                   end;
             end;
       writeln('Delete -',del,', Change -',ch,', After delete -',del1,', Final -',fin);
    end;
end.
Вы выводите начальную строку, как строку после замены. Вы считаете количество неупорядоченых совпадений и выводите его, как необходимое количество изменений.
З.Ы. Я протупил через ошибки в синтаксисе, и написал ввер то, что было бы, если бы логичесикй синтаксис был впорядке. Не хватает операторных скобок, получаеться, что "если длина не равна, то, если строки одинаковые, то не надо изменений". Там бегин-ендов не хватает.

Последний раз редактировалось LeBron; 13.11.2009 в 16:06.
LeBron вне форума Ответить с цитированием
Старый 13.11.2009, 16:08   #13
Паскалька^^
Пользователь
 
Регистрация: 25.11.2008
Сообщений: 53
По умолчанию

Цитата:
Вы выводите начальную строку, как строку после замены
Я вывожу начальную строку, как строку после удаления, т.к. она не изменится (так требуется в задаче)
Цитата:
Вы считаете количество неупорядоченых совпадений и выводите его, как необходимое количество изменений
А как мне исправить эту ошибку?

Так, с бегинами и ендами разобралась...
а вот про совпадения никак...

Последний раз редактировалось Паскалька^^; 13.11.2009 в 16:42.
Паскалька^^ вне форума Ответить с цитированием
Старый 13.11.2009, 16:48   #14
LeBron
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 680
По умолчанию

Цитата:
Сообщение от Паскалька^^ Посмотреть сообщение
Я вывожу начальную строку, как строку после удаления, т.к. она не изменится (так требуется в задаче)

А как мне исправить эту ошибку?

Так, с бегинами и ендами разобралась...
а вот про совпадения никак...
Тоесть второй случай - это полное совпадение строк?
Начну с того, что
Код:
          begin
             for i:=1 to length(a) do
                for j:=1 to length(b) do
                begin
                   begin
                   if a[i]=b[j] then
                   ch:=ch+1;
                   end;
             end;
сдесь не понятно, зачем бегин-енд. Это должно относиться к какому-то условию?

Код:
 for i:=1 to length(a) do
                for j:=1 to length(b) do
я уже в теме писал пример, как подсчитать количество несовпадений. Только поменять названия переменных. Вы ищете для каждого символа совпаение во второй строке, а надо проверять только соответствие символов с однаковыми номерами. Ведь превратить "рак" в "акр" за 0 не получиться.
LeBron вне форума Ответить с цитированием
Старый 13.11.2009, 17:06   #15
Паскалька^^
Пользователь
 
Регистрация: 25.11.2008
Сообщений: 53
По умолчанию

всё, нашла ошибку, работает...
ещё один случай осталось рассмотреть...когда length(a)>length(b).
Паскалька^^ вне форума Ответить с цитированием
Старый 13.11.2009, 19:46   #16
Паскалька^^
Пользователь
 
Регистрация: 25.11.2008
Сообщений: 53
По умолчанию

Вообщем вот....
Так что-то я и не поняла как последний случай доделать(((
Код:
Program P3;
uses
    crt;
const
    n=20;
var
    a,b:string[n];
    i,j,k:integer;
    del1,fin:string[n];
    del,ch:integer;
begin
    writeln ('Vvedite nachalnoe slovo',a);
    read(a);
    writeln ('Vvedite konechnoe slovo',b);
    read(b);
    if length(a)<length(b) then
       writeln ('Preobrazovanie nevozmozhno')
       else
       begin
       if a=b then
          ch:=0;
          del1:=a;
          fin:=b;
          del:=0;
          begin
              for i:=1 to length(a) do
              begin
                 if a[i]<>b[i] then
                 ch:=ch+1;
              end;
          end;
       end;
       if length(a)>length(b) then
       del:=length(a)-length(b);
******************************************************
       writeln('Delete - ',del,', Change - ',ch,', After delete - ',del1,', Final - ',fin);
end.
Паскалька^^ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
СИ. Удалить слова, которые содержат все повторяющиеся буквы первого слова nick23 Помощь студентам 7 01.11.2009 14:47
Как удалить текст до слова, потом от слова ? littlecoder Общие вопросы Delphi 7 29.12.2008 00:57
Перенести в новую строку только те слова, которые разделены одним пробелом. задача на паскаль SashaPRO Паскаль, Turbo Pascal, PascalABC.NET 1 22.12.2008 20:01
Выделить русские слова скобками(паскаль) gred Помощь студентам 8 09.05.2008 19:25
Реализовать возможность автоматического исправления слова "грамматика". Паскаль Den Помощь студентам 6 04.06.2007 10:48