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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2008, 23:49   #1
gotex
Пользователь
 
Регистрация: 09.02.2008
Сообщений: 38
По умолчанию считать из файла две строки, вывести на экран символы первой строки, которые отсутствуют во второй

вот код проги:

program LAb5_brig2;
uses crt;
const LabText = 'c:\textlab5.txt';

{__________________PROCEDURA CHTENI9____________________________ }

Procedure Chtenie(var Fname:text; str1:string; str2:string);
Begin
Assign(fname, labText);
Reset(Fname);

Readln(Fname, str1);
Readln(Fname, str2);
close(fname);
Writeln ('Perva9 stroka: ', str1);
Writeln ('Vtora9 stroka: ', str2);
writeln;
end;

{_____________PERVA9 PROCEDURA__________________________ __}

Procedure Otlichie(Str1:string; str2:string; N:integer; K:integer);
var i,j:integer;
begin
while (i>=1) and (i<=N) do begin
while (j>=1) and(j<=K) do begin

if str1[i]<>str2[j] then
write ('another symb', str1[i], ' ');
i:=i+1;
j:=j+1;
end;
end;
end;


{______________________}

Var
Str1,str2:string;
N,K:integer;
Fname:text;
Begin

Clrscr;
Chtenie(Fname,str1,str2);
writeln;
N:=length(str1);
K:=Length(str2);
Otlichie(str1,str2,N,K);
readln;
end.

прога должна считывать из файла две строки, выводить их на экран и символы первой строки, которые отсутствуют во второй строке...что то не пашет...

файл со строками выглядит так:
1s4f b12sa
ascxaasdadq

В чем дело?
gotex вне форума Ответить с цитированием
Старый 06.05.2008, 08:07   #2
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Procedure Chtenie(var Fname:text; var str1, str2:string);

В процедуре Otlichie нет инициализации переменных, счетчик увеличивается не в том месте, проверка сделана неправильно - короче проще переписать заново. Продумайте алгоритм еще раз.
alexBlack вне форума Ответить с цитированием
Старый 06.05.2008, 22:50   #3
gotex
Пользователь
 
Регистрация: 09.02.2008
Сообщений: 38
По умолчанию

Цитата:
Сообщение от alexBlack Посмотреть сообщение
Procedure Chtenie(var Fname:text; var str1, str2:string);

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

вот код:

program LAb5_brig2;
uses crt;
const LabText = 'c:\textlab5.txt';

{__________________PROCEDURA CHTENI9____________________________ }

Procedure Chtenie(var Fname:text; var str1,str2:string);
Begin
Assign(fname, labText);
Reset(Fname);

Readln(Fname, str1);
Readln(Fname, str2);
close(fname);
Writeln ('Perva9 stroka: ', str1);
Writeln ('Vtora9 stroka: ', str2);
writeln;
end;

{_____________PERVA9 PROCEDURA__________________________ __}

Procedure Otlichie(Str1:string; str2:string; N:integer; K:integer);
var i,j,t:integer;
begin
i:=1;
j:=1;
while (i>=1) and (i<=N) do begin
while (j>=1) and (j<=K) do begin
if str1[i]=str2[j] then begin
i:=i+1;
j:=j+1;
end
else
begin
write(str1[i], ' ');
i:=i+1;
j:=j+1;
end;
end;
end;
end;



{______________________}

Var

str1,str2:string;
N,K:integer;
Fname:text;
Begin

Clrscr;
Chtenie(Fname,str1,str2);
writeln;
N:=length(str1);
K:=Length(str2);
Otlichie(str1,str2,N,K);
readln;
end.

файл со строками выглядит так:
1s4fb12sa
ascxaasda

-----------------------
может кто поможет с алгоритмом, а то меня зациклило...тупая задача, а решить не могу((
gotex вне форума Ответить с цитированием
Старый 07.05.2008, 08:23   #4
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Цитата:
прога должна считывать из файла две строки, выводить их на экран и символы первой строки, которые отсутствуют во второй строке...что то не пашет...
Еще раз повторю. Проверка сделана неправильно:

Код:
... Otlichie
...
   for i:=1 to length(str1) do begin // проходим по первой строке 
       // str1[i] - очередной символ 
       // проверяем, есть ли он во второй строке
       j:=1; b:=false;
       while (not b) and (j <= length(str2)) do begin
           if str1[i] = str2[j] then begin // символ есть 
              b := true;
           end;
           inc(j)
       end;  
       if not b then // символ не найден во второй строке         
        ...
Алгоритм, надеюсь, понятен.
alexBlack вне форума Ответить с цитированием
Старый 08.05.2008, 02:27   #5
gotex
Пользователь
 
Регистрация: 09.02.2008
Сообщений: 38
По умолчанию

Цитата:
Сообщение от alexBlack Посмотреть сообщение
Еще раз повторю. Проверка сделана неправильно:

Код:
... Otlichie
...
   for i:=1 to length(str1) do begin // проходим по первой строке 
       // str1[i] - очередной символ 
       // проверяем, есть ли он во второй строке
       j:=1; b:=false;
       while (not b) and (j <= length(str2)) do begin
           if str1[i] = str2[j] then begin // символ есть 
              b := true;
           end;
           inc(j)
       end;  
       if not b then // символ не найден во второй строке         
        ...
Алгоритм, надеюсь, понятен.
Спасибо!! Все сработало
gotex вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как считать строки? Черничный Общие вопросы Delphi 14 01.09.2008 14:56
Символы и строки. Нужна помощь insi Фриланс 6 24.05.2008 20:54
Как вывести из текстового файла на экран русский текст? Mischa Помощь студентам 8 12.03.2008 06:23
как вывести строку поочередно сначала первая буква первой строки потом первая буква второй строки и т.д. vitalik007 Помощь студентам 1 25.09.2007 20:45