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

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

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

Автор: Geroi 2.05.2003 0:42

Вот такая проблемка. sad.gif

Цитата(Задача 1)
Код
type myfile = file of integer;

Опишите процедуру double (f), удваивающие в файле f все четные числа.
У нас есть файл, проверяем то, что в нём написано на чётность, если какое-то число чётное, то надо его умножить на 2 и записать вместо умножаемого числа. Файл должен быть один, т.е. использовать ещё один файл нельзя. :-/
Цитата(Задача 2)
Задан текстовый файл 'a.txt'. Написать программу, которая утраивает значения слов, являющиеся четными числами.
Как её вообще делать? с чего начать?!?!!?!?!? ??? Имеется в виду, что не создание файла smile.gif
Всем заранее спасибо ;D
Ivs надеюсь на твою помощь и других знатоков Паскаля....

Автор: ___ALex___ 2.05.2003 1:32

а если число после умножения на 2 привысит MaxInt а?
кто писал это условие  ;D

Автор: Geroi 2.05.2003 1:45

хех, если ты решил сумничать, то у тебя не получилось :P, вопрос не к чему, с такими ответами лучше молчать..... :-X

Нармально мыслящие люди такой вопрос наврядли задодут...

Автор: GLuk 2.05.2003 7:58

А сам ты по ходу ничего не сделал?
Выложил бы то что начал, а то все надеются получить здесь готовое решение не прилагая к этому никаких усилий >:(
И сразу решил сумничать... >:(
Пусть я не нормально мыслящий человек, да и тоже решу сумничать, но все таки скажу кое-что:
1. По поводу превышения макс. значения Integer: вообще говоря тип данных описан выше, так что навряд ли придется, переделывать его. Но в условии это не указано напрямую, а работа с удвоенным целым без расширения его в три-четыре байта и как следствие запись в файл этих значений (один файл) существенно отличается от записи тех же удвоенных целых, но в 2 байта длиной.
Хотя может быть ты не знаешь, что такое MaxInt, Geroi?  :o smile.gif
Если решать нужно все-таки без расширения получаемых целых, то прога очень просто реализуется через процедуры BlockWrite, BlockRead & Seek.
Если нет - придется читать все в память, либо выкобениваться при чтении/записи, после чтения анализируя каждый фрагмент...

Выложи хотя бы сырец своего творения, Герой

P.S. А по поводу молчания с такими вопросами (Alex Mes), дык это тебе лучше молчать с такими заданиями... >:(

Автор: ___ALex___ 2.05.2003 12:25

да не объясняй ты это ламеру
он же ГЕРОЙ сам всё сделает

Автор: Geroi 2.05.2003 12:29

Я вообще не могу понять, что вам не нравится?!?!?! ??? ???
По первой задаче, Я задал токо один вопрос, её решать не надо, Я её сам сделаю. У меня вопрос, как там сделать эту замену числа чётного, после его удваевания.
А по второй Я просто без понятия как её начать. И у вас это спросил.
А вы тут муть и спам разводите.
Если не знаете, так вас никто не напрегает, а если можете помочь. то вам решать, говорить или нет.
Лишний базар у Вас идёт......
В задаче имеется ввиду, что числа будут от 1 до 50.... или в этом роде.

Автор: ___ALex___ 2.05.2003 12:39

ты же "Нармально" мыслящий человек!
В чём же тогда проблема? ха ха ха

Автор: Geroi 2.05.2003 14:04

Alex иди спать, не мозоль глаза.

Автор: ___ALex___ 2.05.2003 14:09

это говорит о том - что осёл тут один - это ТЫ
главно мыслящий осёл ха ха ха

Автор: ___ALex___ 2.05.2003 14:12

если тебе это о чём-то скажет
то Seek работает и с типизированными файлами

Автор: ___ALex___ 2.05.2003 14:18

и ещё
если в файле хранятся числа из диапазона 1..50
то надо сменить "File of Integer" на "File of Byte"
дабы уменьшить размер файла
так как 1..50 * 2 < High(Byte) надеюсь такая абстрактная запись тебе будет ясна

Автор: Geroi 2.05.2003 15:01

ох как ты достал, говоришь то, что говорят в 9 классе в школе.
Чё слабо вторую задачу сделать?  Мне слабо sad.gif, поэтому и зашёл сюда, чтоб помогли её сделать болле знающие люди, а Есле ты не можешь, то не к чему разводить балаган на форуме. Я сюда обратился за помощью, а не с тоболй рамсеть. А если ты малой недоносок, то мне  с тобой вообще  не очём говорить.   >:(

Автор: ___ALex___ 2.05.2003 15:49

"ох как ты достал, говоришь то, что говорят в 9 классе в школе."
ты значит ещё младше раз это в 9 классе говорят или ты на уроки не ходишь учёничёк  
"Чё слабо вторую задачу сделать?"
легко)примитивщина
но тебе походу не под силу...
молись ламер чтобы тебе её кто-нибудь решил либо плати WM-ами
тогда я тебе её решу
P.S. таким ослам - только за лаве  

Автор: Geroi 2.05.2003 16:32

Alex разве ты заходишь только поболтать? Что те не нравится?
я думаю не надо быть столь придирчивым к условию, я ведь его не сам выдумывал, MaxInt или т.п. Суть не в этом.
Сам ты нехороший человек, говориш чушь какую-то.
А на счёт того что Я немогу сделать, то Я сам сказал, что её слабо сделать.
Разве Я похож на  ламера? Если Я немогу сделать какие-то задачи, это не чего не значит.
И ещё ты нехороший человек, если такую как ты говориш прмитивщину за деньги делаешь.

Автор: Ivs 2.05.2003 17:02

Ладно хватит паливать друг друга матом не из-за чего...
Вот прога, но я её мало тестил так что могут (да скорее всего они и есть) - быть глюки

Код

program for_Geroi;

Var
  i,j,code,Num2 : Integer;
  S,Num         : String;
  f,fn          : Text;

Begin
  Assign(f ,'a.txt'); Reset(f);
  Assign(fn,'b.txt'); Rewrite(fn);
  while not(EoF(f)) do
  begin
     Readln(f,S);
     i:=1;
     while i<=length(S) do
     begin
      Num:='';
      while (S[i] in ['0'..'9']) do
      begin
          Num:=Num+S[i];
          Inc(i);
      end;
      if Num<>'' then
      begin
         Val(Num,Num2,code);
         if Num2 mod 2 = 0 then
         begin
            Num2:=Num2*3;
            Str(Num2,Num);
         end;
      Write(fn,Num);
      end;
      if NOT(S[i] in ['0'..'9']) then Write(fn,S[i]);
      Inc(i);
     end;
     Writeln(fn);
  end;
  Close(f);
  Close(fn);
  Erase(f);
  Rename(fn,'a.txt');
End.

Прогу не комментировал так что если чего непонятно - спрашивай.

Автор: ___ALex___ 2.05.2003 18:13

опять очередной соискатель халявы получил что хотел...обидно
понимаю хоть бы сам что-то сделал...
ведь всегда видно людей у которых просто что-то не получается и им достаточно порой намёка для решения их задачи - таким людям грех не помочь(сами тебе в другой раз помогут) а таким...
всё равно бестолку - ну что Ivs тебе решил ну и? мозги-то его ты себе не приложишь! ну и ладно  :P

Автор: jackal 2.05.2003 18:33

Alex или Ivs у вас есть какие нибудь мысли по моей задаче?(Тема : "Сырая прога") Только ответьте пожалуйста!

Автор: GLuk 2.05.2003 18:48

По-моему реализация IVS'a не соответствует условию задачи (во-всяком случае первой): должен быть открыт только один файл. Вот мой вариант, а почему я его сделал, дык это потому что процедура открытия файла в пасе для чтения/записи одновременно, всегда работала криво (он использует FSB). И если все таки попробовать, то получается такая хня, а точнее он выдает ОШИБКУ №6 которая в принципе не может случится!!! :o :o
Кое-что на ассемблере, но иначе пришлось постоянно открывать/закрывать файл, что не прет...
Чтобы работало и для задачи №2, дык просто утроить переменную W...

А вони действительно было много :D

Const
FName = 'int.bin';
IntNumb = 10;
Var
F:File of Integer;
i,Handle:Word;
W:Integer;
M,K:LongInt;
S:String;
Procedure GenerateFile;
begin
Assign(F,FName);
ReWrite(F);
For i:=1 to IntNumb do
begin
W:=Random(50)+1;
Write(F,W);
end;
Close(F);
end;
Procedure WriteInt;Assembler;
asm
mov bx,Handle
mov cx,2
lea dx,W
mov ah,40h
int 21h
end;
Procedure MovePointer(Ad:LongInt);Assembler;
asm
mov ax,4200h
mov bx,Handle
mov dx,word ptr Ad
mov cx,word ptr Ad + 2
int 21h
end;
Procedure ReadInt;Assembler;
asm
mov ah,3Fh
mov bx,Handle
mov cx,2
lea dx,W
int 21h
end;
Function GetPointer:LongInt;Assembler;
asm
mov ax,4201h
xor dx,dx
mov cx,dx
mov bx,Handle
int 21h
end;
Begin
GenerateFile;
S:=FName+#0;
asm
mov ax,3D02h
lea dx,S
inc dx
int 21h
mov Handle,ax
end;
M:=0;
While M<IntNumb do
begin
ReadInt;
If not Odd(W) then
begin
W:=W*W;
K:=GetPointer;
MovePointer(K-2);
WriteInt;
end;
Inc(M);
end;
asm
mov ah,3Eh
mov bx,Handle
int 21h
end;
End.

Автор: Ivs 2.05.2003 19:22

GLuk, ты прав про единственность файла, я что-то пропустил это условие, мое решение прошу считать ошибочным.

Автор: AlaRic 2.05.2003 19:43

for __Alex__ and Geroi: на форуме никаких разборок!