Версия для печати темы
Форум «Всё о Паскале» _ Задачи _ Простые задчки на файлы
Автор: Retabol 26.05.2004 23:34
Всем привет!
Огромная просьба помочь мне решить две задачи.
Решается оценка(не вру).
1) Дан текстовый файл. Вставить в начало каждой строки ее номер и записать
преобразованные строки в новый файл.
2)Даны файлы F и G, элементами которых являются символы.
Записать в файл H все элементы файлов F и G, сохраняя деление на строки.
ЗЫ. Просьба написать полный текст задачи. Помогите тупому, плз...
Буду очень благодарен....
Автор: Retabol 26.05.2004 23:35
Я не двойник! На форуме у Вас первый раз.
МОДЕРАТОРАМ: огромная просьба не удалять тему. С правилами форума ознакомлен. Не решаю задачи не потому что мне лень, а потому что я пока плохо разбираюсь в Паскале.
Во-первых не модераторам, а модератору.
Во-вторых с чего вы взяли, что темы удаляют? :D
Автор: Retabol 27.05.2004 9:09
Ребят, ну неужели никто не может помочь?
Автор: Altair 27.05.2004 11:18
первая.
Код
var
f,t:text;
i:longint;
fn,s:string;
begin
write('‚ўҐ¤ЁвҐ Ё¬п д ©« :'); readln(fn);
Assign(f,fn); reset(f);
write('ўўҐ¤ЁвҐ Ё¬п ЌЋ‚ЋѓЋ д ©« :'); readln(fn);
Assign(t,fn); rewrite(f);
while not EOF(F) do
begin
inc(i);
readln(f,fn);s:='';
str(i,s);
s:=s+' '+fn;
end;
Close(f); Close(t);
Writeln('ўбҐ ᤥ« ®!');
end.
я непроверял ее, писал в ответе.
Так что проверьте.
Кодир DOS (866).
Автор: APAL 27.05.2004 13:42
Цитата
2)Даны файлы F и G, элементами которых являются символы.
Записать в файл H все элементы файлов F и G, сохраняя деление на строки.
Можно уточнить условие?
Если H - это текстовый файл, то:
Код
Var
f,g : File of Char;
h : Text;
Ch : Char;
Begin
Assign(f,'F.CHR');
Assign(g,'G.CHR');
Assign(h,'H.TXT');
Reset(f);
ReWrite(h);
While not EOF(f) do
Begin
Read(f,Ch);
If Ch=#13 then Writeln(h) else Write(h,Ch);
End;
Close(f);
Writeln(h);
Reset(g);
While not EOF(g) do
Begin
Read(g,Ch);
If Ch=#13 then Writeln(h) else Write(h,Ch);
End;
Close(g);
Close(h);
End.
Автор: Retabol 27.05.2004 21:46
Текстовыми можно взять все файлы.
То есть получается:
Цитата
Var
f,g,h:text;
Ch:Char;
Begin
Assign(f,'F.txt');
Assign(g,'G.txt');
Assign(h,'H.txt');
Reset(f);
ReWrite(h);
While not EOF(f) do
Begin
Read(f,Ch);
If Ch=#13 then Writeln(h) else Write(h,Ch);
End;
Close(g);
Close(h);
End.
Выдает ошибку там, где "Close(g)". Типа файл G не был открыт...
Автор: APAL 27.05.2004 22:14
Потому что он еще не был открыт!
Ты возьми тот код что я выставил ЦЕЛИКОМ.
Автор: APAL 27.05.2004 22:17
А если все три файла текстовые - то можно сократить до элементарного...
Код
Var
f,g,h : Text;
St : String;
Begin
Assign(f,'F.CHR');
Assign(g,'G.CHR');
Assign(h,'H.TXT');
Reset(f);
ReWrite(h);
While not EOF(f) do
Begin
Readln(f,St);
Writeln(h,St);
End;
Close(f);
Reset(g);
While not EOF(g) do
Begin
Readln(g,St);
Write(h,St);
End;
Close(g);
Close(h);
End.
Автор: Retabol 27.05.2004 23:42
APAL
спасибо за помощь.
Oleg_Z
а где эту кодировку можно поменять?
Автор: Retabol 27.05.2004 23:44
Oleg_Z
а можно как-нибудь полегче решить? ;)
Автор: APAL 27.05.2004 23:53
Можно "полегче" если заменить например:
Код
inc(i);
readln(f,fn);s:='';
str(i,s);
s:=s+' '+fn;
(кстати, здесь надо добавить: Writeln(t,s) )
на
Код
inc(i);
readln(f,fn);
Writeln(t,i,' '+fn);
А переменную s - можно вообще "убить".
Автор: APAL 27.05.2004 23:58
Цитата(Retabol @ 27.05.04 20:42)
Oleg_Z
а где эту кодировку можно поменять?
Кодировку нигде брать не надо...
просто вместо абракадабры напиши сам что-то вроде:
"Введите имя файла источника", "Введите имя файла результата"
:D
Автор: Ксанка 27.05.2004 23:59
Ребята, привет! Помогите бедной девушке разобраться с такой вот задачкой: Нужно "зашифровать exe файл по электронной почте". помогите пожалуйста.......
Автор: virt 28.05.2004 0:03
знаешь ли ,оригинальная постановка задачи
Автор: GLuk 28.05.2004 0:06
С помощью паскаля что-ли, бедная девушка???
Автор: APAL 28.05.2004 0:21
Для этого есть куча программ.
Самый простой вариант - заархивировать с паролем! :D
Автор: Altair 28.05.2004 1:31
Цитата
С помощью паскаля что-ли, бедная девушка???
Мне всегда их жалко ...
Цитата
зашифровать exe файл по электронной почте
Ужас.
Может зашифровать, а потом отправить по почте?
Но это точно не в паскаль...
Кто же такие задачи дает?????
Автор: Altair 28.05.2004 1:34
Цитата
а можно как-нибудь полегче решить?
Как это проще ????????
Итак 14 строк кода.
APAL просто оптимизировал немного .
Товарищ, Retabol, такое не облегчают
.....
P.S. Что-то я законов Мерфи начитался...
Автор: Ксанка 28.05.2004 3:46
Олег, я вижу ты тут самый разумный из всех, мне дали задание: Зашифровать файл с расширением exe и послать по эл.почте, для этого нужно:
1. написать программу
2. написать блок-схему
3. пояснение
3.1. создать свою кодовую таблицу
3.2. из ехе файла убрать символы и заменить их на другие
3.3. записать изменённые коды
вот такой бред, я сама никак не могу разобраться.....я тут пыталась попробовать вот так: но совсем запуталась...( Помоги пожалуйста...
Код
program encrypt;
uses CRT;
var
ch: Char;
begin
Writeln('exe');
repeat
ch:= ReadKey;
Write(Char(Ord(ch)+1));
until ch = 'z';
end.
Автор: kile 28.05.2004 4:24
ксанка, какой же это шифр :D...
Автор: Retabol 28.05.2004 9:39
Окей, ребят, всем большое спасибо за помощь.
С первой задачей перебьюсь, покажу только вторую...
Не перевелись же еще добрые люди на земле
Автор: Altair 28.05.2004 14:53
Цитата
Олег, я вижу ты тут самый разумный из всех
Далеко не самый. Здесь есть настоящие профи!
------------------
Вот что я тут написал:
Код
var
f,f1:file of byte;
i:longint;
fn:string;
b:byte;
begin
Write('‚ўҐ¤ЁвҐ Ё¬п иЁда㥬®Ј® д ©« '); readln(fn);
Assign(f,fn); {бўп§лў Ґ¬ д ©®ўго ЇҐаҐ¬Ґго б Ё¬ҐҐ¬ д ©« }
Reset(f);
Writeln('ўўҐ¤ЁвҐ Ё¬п д ©« , Є®в®ал© ¤® ᮧ¤ вм (нв® Ўг¤Ґв § иЁда®ў л© д ©«)');
readln(fn);
Assign(f1,fn);
rewrite(f1);
For i:=0 to filesize(f)-1 do
begin
seek(f,i); {ЇҐаҐ¬Ґй Ґ¬ гЄ § ⥫м д ©« i-л© н«Ґ¬Ґв}
read(f,b);{бзЁвлў Ґ¬ § 票Ґ}
{§¤Ґбм п Ґ ЇЁб «. §¤Ґбм ¤®«¦ Ўлвм ўлЎ®аЄ Ё§ Є®¤®ў®© в Ў«Ёжл}
write(f1,b);
end;
close(f); close(f1);
end.
Эта программа читает побитно EXE файл и записывает в другой (который окажется зашифрованным)
Я только не сдалал само шифрование. Вот почему:
Цитата
3.1. создать свою кодовую таблицу
Я-то еще только школу закончил, а вы наверно это проходили в универе.
Так вот, если я правитльно понял, то кодовая таблица имее следующий вид:
"код" - "на что его заменить"
....
Если так, то я доделаю, если не так, то скажите как надо делать кодовую таблицу.
Блок схему я на листочке нарисую, отсканирую и присоединю к сообщению.
kile сказал:Цитата
ксанка, какой же это шифр ...
А что это по вашему?
Если вы насчет того, что ксанка написала, то она сказала:
"Совсем запуталась".
Автор: Altair 28.05.2004 14:56
Цитата
Окей, ребят, всем большое спасибо за помощь.
С первой задачей перебьюсь, покажу только вторую...
Нет, стой.
Скажи что надо упростить и мы упростим. Эта не та задача, в которой нельзя ничего упростить.
Автор: Retabol 28.05.2004 17:35
такое понятие как "inc" мы вообще не используем.
и еще, если не сложно, подпиши комментарии в программе, а то я не очень разобрался в смысле...
Автор: Altair 28.05.2004 21:37
Цитата
такое понятие как "inc" мы вообще не используем.
Да inc это просто увеличение значения переменной.
Код
var
f,t:text;
i:longint;
fn,s:string;
begin
write('‚ўҐ¤ЁвҐ Ё¬п д ©« :'); readln(fn);
Assign(f,fn); {связываем переменую f с введенным именем}
reset(f); {отркрываем файл}
write('ўўҐ¤ЁвҐ Ё¬п ЌЋ‚ЋѓЋ д ©« :'); readln(fn);
Assign(t,fn); rewrite(f); {тоже связываем переменную и открываем файл}
while not EOF(F) do {пока нет конца файла повторять:}
begin
inc(i); {увеличить i на единицу}
readln(f,fn); {прочитать строку из файла}
s:=''; {"обнулить строку"}
str(i,s);{переводим i (длинное целое) в строку, используя процедуру str}
s:=s+' '+fn; {добавляем к строке, строку с номером}
end;
Close(f); Close(t); {close all file}
Writeln('ўбҐ ᤥ« ®!');
end.
Автор: Altair 28.05.2004 21:39
Ой, а ничего, что я комент написал в кодировке win, а прога в кодировке дос?
Кодировка дос у проги, чтобы ты из турбо Паскаля открыл сохраненный файл, и он нормально читался.
Автор: Ксанка 29.05.2004 18:48
kile смешно тебе...посоветовал бы что-нибудь по этому поводу... <_<
Автор: Ксанка 29.05.2004 18:58
Ой, Олег, спасибо тебе, чмооооки) Как хорошо, когда есть такие хорошие отзывчивые люди, спасибоспасибоспасибо! [IMG]http://smilies.jeeptalk.org/otn/love/kotc.gif[/IMG]
Автор: Ксанка 29.05.2004 19:04
Олег, да, забыла сказать, что кодовую таблицу нужно сделать именно так, как ты написал, спасииибо тебе за все
Автор: Retabol 30.05.2004 2:02
Присоединяюсь к Ксанке!
Спасибо всем за помощь. Задачи я показал, все ок!
Автор: Altair 31.05.2004 13:35
Вот первая реализация кодовой таблицы - просто смещаем код.
Код
{ Є®¤®ўго в Ў«Ёжг ¬®¦® ॠ«Ё§®ў вм ҐбЄ®«мЄЁ¬Ё бЇ®б®Ў ¬Ё.
¬л ў®§м¬Ґ¬ Їа®б⥩訩 бЇ®б®Ў - § ¬ҐпҐ¬ бзЁв л© Є®¤ Ї® д®а¬г«Ґ
¤«п Є®¤®ў ®в 0 ¤® 250 - new_kod=kod+5
¤«п ®бв «мле, ®бв ў«пҐ¬ Є Є Ґбвм. в.Ґ. Їа®б⮠ᬥ饨Ґ.
Њ®¦® ॠ«Ё§®ў вм Є®¤®ўго в Ў«ЁжҐ ў ўЁ¤Ґ д ©« -Є«оз .
}
var
f,f1:file of byte;
i:longint;
fn:string;
b:byte;
begin
Write('‚ўҐ¤ЁвҐ Ё¬п иЁда㥬®Ј® д ©« '); readln(fn);
Assign(f,fn); {бўп§лў Ґ¬ д ©®ўго ЇҐаҐ¬Ґго б Ё¬ҐҐ¬ д ©« }
Reset(f);
Writeln('ўўҐ¤ЁвҐ Ё¬п д ©« , Є®в®ал© ¤® ᮧ¤ вм (нв® Ўг¤Ґв § иЁда®ў л© д ©«)');
readln(fn);
Assign(f1,fn);
rewrite(f1);
For i:=0 to filesize(f)-1 do
begin
seek(f,i); {ЇҐаҐ¬Ґй Ґ¬ гЄ § ⥫м д ©« i-л© н«Ґ¬Ґв}
read(f,b);{бзЁвлў Ґ¬ § 票Ґ}
{§¤Ґбм п Ґ ЇЁб «. §¤Ґбм ¤®«¦ Ўлвм ўлЎ®аЄ Ё§ Є®¤®ў®© в Ў«Ёжл}
If b<250 then b:=b+5;
write(f1,b);
end;
close(f); close(f1);
end.
Вот покруче, эта прога использует файл-ключ. Для примера, я присоединил файл-ключ к этому сообщению.
Код
{ н⮠ॠ«Ё§ жЁп д ©« -Є«оз , Є®в®ал© гбв஥ б«Ґ¤. ®Ўа §®¬:
®¬Ґа_Ї®§ЁжЁЁ_ў_д ©«Ґ_Є«озҐ - § 票Ґ_§ ¬ҐпҐ¬®Ј® бЁ¬ў®« .
}
var
CodeFile:file of byte;
f,f1:file of byte;
i:longint;
fn:string;
b:byte;
begin
Assign(CodeFile,'KODTABL.DAT');
{$F-} reset(CodeFile); {$F+}
If IoResult<>0 then HALT; {Ґб«Ё Ґ ©¤Ґ Є«оз-д ©«, в® § ўҐаиЁвм а Ў®вг}
Write('‚ўҐ¤ЁвҐ Ё¬п иЁда㥬®Ј® д ©« '); readln(fn);
Assign(f,fn); {бўп§лў Ґ¬ д ©®ўго ЇҐаҐ¬Ґго б Ё¬ҐҐ¬ д ©« }
Reset(f);
Writeln('ўўҐ¤ЁвҐ Ё¬п д ©« , Є®в®ал© ¤® ᮧ¤ вм (нв® Ўг¤Ґв § иЁда®ў л© д ©«)');
readln(fn);
Assign(f1,fn);
rewrite(f1);
For i:=0 to filesize(f)-1 do
begin
seek(f,i); {ЇҐаҐ¬Ґй Ґ¬ гЄ § ⥫м д ©« i-л© н«Ґ¬Ґв}
read(f,b);{бзЁвлў Ґ¬ § 票Ґ}
Seek(CodeFile,b);
Read(f,b);
write(f1,b);
end;
close(f); close(f1);
end.
Цитата
Ой, Олег, спасибо тебе, чмооооки
Да, я что, я ничего ...
Прикрепленные файлы
KODTABL.DAT ( 256 байт )
Кол-во скачиваний: 7