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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2012, 12:18   #1
Dasha1610
Пользователь
 
Регистрация: 19.02.2012
Сообщений: 24
Сообщение стеганография.

как правильно записать удвоение пробела((
выделено красным

Код:
program co_dec;
uses crt;
var
fI, fO : text;
i, j  : integer;
b : byte;
sI, sO , s, d: string;  c: char;
begin
clrscr;
Assign(fI, 'CONT2.txt');
Assign(fO, 'POL2.txt');
WriteLn('Введите строку для кодирования: '); Readln(sI); 
Reset(fI);
Rewrite(fO); 


for i:=1 to Length(sI) do begin
b:= ord(sI[i]);   

for j:=1 to 8 do begin      
ReadLn(fI, s);

c:=s[i];
if ((b and 1)=1 and c=' ') then c:='  '; 

WriteLn(fO, s); 

b:= b shr 1; 
end;
end;

while Not EOF(fI) do begin    
ReadLn(fI, s);
WriteLn(fO, s);
end;

Close(fO);
Close(fI);
Writeln('Смотри полученный файл :)');
end.
Dasha1610 вне форума Ответить с цитированием
Старый 27.02.2012, 13:00   #2
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

1.
Код:
ReadLn(fI, s);
Здесь вы загружаете строку из файла
Код:
c:=s[i];
А здесь вы получаете значение элемента строки, которого может просто не существовать. И, тем более, далеко не факт, что в данном месте будет пробел.
2.
Код:
if ((b and 1)=1 and c=' ') then c:='  ';
тогда данное условие будет выполняться лишь в редких случаях, когда вам очень повезёт, но и тогда этот пробел не попадёт в выходной файл.

Чтобы исправить этот код вам нужно:
Код:
ReadLn(fI, s);

c:=s[i];
if ((b and 1)=1 and c=' ') then c:='  ';
Изменить вот этот блок на другой, работающий по алгоритму:
1. Ищем положение следующего пробела в предложении
2. если пробелов больше нет, то записываем строку в выходной файл и считываем новую строку и переходим на п.1.
3. если файл закончился, то заканчиваем кодирование
4. если бит = 1 тогда добавляем пробел в считанную строку, которую потом будем сохранять в выходном файле
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 27.02.2012, 13:19   #3
Dasha1610
Пользователь
 
Регистрация: 19.02.2012
Сообщений: 24
По умолчанию

я не пойму как искать положение пробела в строке..
Dasha1610 вне форума Ответить с цитированием
Старый 28.02.2012, 21:15   #4
Dasha1610
Пользователь
 
Регистрация: 19.02.2012
Сообщений: 24
Восклицание

Код:
program co_dec;
uses crt;
var
fI, fO : text;
i, j, z  : integer;
b : byte;
sI, sO , s, d: string;  p: char;
begin
clrscr;
Assign(fI, 'CONT2.txt');
Assign(fO, 'POL2.txt');
WriteLn('Введи текст кодировки: '); Readln(sI); 
Reset(fI);
Rewrite(fO); 

for i:=1 to Length(sI) do begin
b:= ord(sI[i]);   

for j:=1 to 8 do begin    

  

while not eof (fI) do begin
z:=0;
ReadLn(fI, s);
z:= POS(' ',s); 
if (b and 1)=1 then s := copy(s,1,z) + '_' + copy(s,z+1,length(s)-z); 
writeln(fO,s);   end;



b:= b shr 1; 
end;
end;
Close(fO);
Close(fI);
Writeln('Сотри полученное:)');
end.

почему он только первый пробел видит??что еще нужно добавить?

Последний раз редактировалось Dasha1610; 28.02.2012 в 21:20.
Dasha1610 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Стеганография Dasha1610 Помощь студентам 3 21.02.2012 19:30
Стеганография datMaster Помощь студентам 3 28.10.2011 09:06
Стеганография Solny6ko YasnoE Фриланс 9 17.01.2011 17:19
Стеганография v.dmitry Помощь студентам 3 26.04.2009 04:46