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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.02.2012, 16:41   #1
diekster
Пользователь
 
Регистрация: 03.02.2012
Сообщений: 23
По умолчанию Задача на строки

Здрасте задали вот такую задачку:
Цитата:
Даны 3 строки вывести символы которые встречаются в первой и третей строках и не встречаются во второй.
Сам решал но у меня выводит последний символ строки. Кто сможет подправьте код пожалуйста:

Код:
s1:=edit1.text;
     s2:=edit2.text;
     s3:=edit3.text;
     ls1:=length(s1);                                  
     ls2:=length(s2);                                    
     ls3:=length(s3);                                     
     max:=0;
     begin
     if ls1>ls2 then
        max:=ls1
        else
        if max<ls2 then
        max:=ls2
     end;
     if max<ls3 then
        max:=ls3;
     for i:=1 to max do
         begin
              if ((s1[i]=s3[i])and(s1[i]<>s2[i])and(s3[i]<>s2[i]))then
              rez[i]:=s1[i]
              else
              edit4.text:='Таких Чисел Нет!';
         end;
         edit4.text:=rez;

end;
Как решал задачу , нашел самую длинную строку (переменная MAX) потом начал по символьно сравнивать каждую строку если i-тый элемент первой строки равен i-тому элементу третей строки,и i-тый элемент первой и третей строки не равен i-тому элементу второй строки то вывести этот символ в поле edit4.text Язык программирования PASCAL ABC
diekster вне форума Ответить с цитированием
Старый 13.02.2012, 17:48   #2
Plague
Забанен
Форумчанин Подтвердите свой е-майл
 
Аватар для Plague
 
Регистрация: 01.11.2006
Сообщений: 420
По умолчанию

на вскидку:
Код:
var s1,s2,s3,a:string;
    i:integer;
begin
  readln(s1);
  readln(s2);
  readln(s3);
  a:='';
  for i:=1 to length(s1) do
    if (pos(s1[i],s3)>0)and(pos(s1[i],a)=0) then
      a:=a+s1[i];
  i:=1;
  writeln(a); // встречаются в первой и третьей строке
  repeat
    if pos(a[i],s2)>0 then delete(a,i,1) else inc(i);
  until i>length(a);
  writeln(a); // не встречаются во второй
end.
Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана
Plague вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на строки 3141519 Паскаль, Turbo Pascal, PascalABC.NET 1 19.05.2011 15:50
задача на строки C++ Serega4444 Помощь студентам 2 12.03.2011 20:20
Задача на строки NatawaB Паскаль, Turbo Pascal, PascalABC.NET 1 10.01.2011 07:50
Задача на строки.С++ Many man Помощь студентам 5 19.05.2009 19:04
Задача на строки Stiff Помощь студентам 6 26.03.2009 22:47