Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Простые задчки на файлы

Автор: 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

Ребят, ну неужели никто не может помочь? unsure.gif

Автор: 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

Потому что он еще не был открыт!

Ты возьми тот код что я выставил ЦЕЛИКОМ. smile.gif

Автор: 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
а где эту кодировку можно поменять?

Кодировку нигде брать не надо... smile.gif
просто вместо абракадабры напиши сам что-то вроде:
"Введите имя файла источника", "Введите имя файла результата"
:D

Автор: Ксанка 27.05.2004 23:59

Ребята, привет! Помогите бедной девушке разобраться с такой вот задачкой: Нужно "зашифровать exe файл по электронной почте". помогите пожалуйста....... huh.gif

Автор: virt 28.05.2004 0:03

знаешь ли ,оригинальная постановка задачиsmile.gif

Автор: GLuk 28.05.2004 0:06

С помощью паскаля что-ли, бедная девушка???

Автор: APAL 28.05.2004 0:21

Для этого есть куча программ.
Самый простой вариант - заархивировать с паролем! :D

Автор: Altair 28.05.2004 1:31

Цитата
С помощью паскаля что-ли, бедная девушка???

Мне всегда их жалко ... sad.gif sad.gif sad.gif

Цитата
зашифровать exe файл по электронной почте

Ужас.
Может зашифровать, а потом отправить по почте?
Но это точно не в паскаль... sad.gif sad.gif sad.gif
Кто же такие задачи дает????? sad.gif

Автор: Altair 28.05.2004 1:34

Цитата
а можно как-нибудь полегче решить?

Как это проще ????????
Итак 14 строк кода.
APAL просто оптимизировал немного .
Товарищ, Retabol, такое не облегчают sad.gif .....


P.S. Что-то я законов Мерфи начитался... sad.gif

Автор: Ксанка 28.05.2004 3:46

Олег, я вижу ты тут самый разумный из всех, мне дали задание: Зашифровать файл с расширением exe и послать по эл.почте, для этого нужно:
1. написать программу
2. написать блок-схему
3. пояснение
3.1. создать свою кодовую таблицу
3.2. из ехе файла убрать символы и заменить их на другие
3.3. записать изменённые коды

вот такой бред, я сама никак не могу разобраться.....я тут пыталась попробовать вот так: но совсем запуталась...sad.gif( Помоги пожалуйста...

Код
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

Окей, ребят, всем большое спасибо за помощь.
С первой задачей перебьюсь, покажу только вторую...
Не перевелись же еще добрые люди на земле smile.gif

Автор: 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

Ой, Олег, спасибо тебе, чмоооокиsmile.gif) Как хорошо, когда есть такие хорошие отзывчивые люди, спасибоспасибоспасибо! [IMG]http://smilies.jeeptalk.org/otn/love/kotc.gif[/IMG]

Автор: Ксанка 29.05.2004 19:04

Олег, да, забыла сказать, что кодовую таблицу нужно сделать именно так, как ты написал, спасииибо тебе за всеsmile.gif

Автор: 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.



Цитата
Ой, Олег, спасибо тебе, чмооооки

wub.gif
Да, я что, я ничего ... rolleyes.gif


Прикрепленные файлы
Прикрепленный файл  KODTABL.DAT ( 256 байт ) Кол-во скачиваний: 7