Помощь - Поиск - Пользователи - Календарь
Полная версия: Файлы, и работа сними
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Geroi
Вот такая проблемка. sad.gif
Цитата(Задача 1)
Код
type myfile = file of integer;

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

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

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

P.S. А по поводу молчания с такими вопросами (Alex Mes), дык это тебе лучше молчать с такими заданиями... >:(
___ALex___
да не объясняй ты это ламеру
он же ГЕРОЙ сам всё сделает
Geroi
Я вообще не могу понять, что вам не нравится?!?!?! ??? ???
По первой задаче, Я задал токо один вопрос, её решать не надо, Я её сам сделаю. У меня вопрос, как там сделать эту замену числа чётного, после его удваевания.
А по второй Я просто без понятия как её начать. И у вас это спросил.
А вы тут муть и спам разводите.
Если не знаете, так вас никто не напрегает, а если можете помочь. то вам решать, говорить или нет.
Лишний базар у Вас идёт......
В задаче имеется ввиду, что числа будут от 1 до 50.... или в этом роде.
___ALex___
ты же "Нармально" мыслящий человек!
В чём же тогда проблема? ха ха ха
Geroi
Alex иди спать, не мозоль глаза.
___ALex___
это говорит о том - что осёл тут один - это ТЫ
главно мыслящий осёл ха ха ха
___ALex___
если тебе это о чём-то скажет
то Seek работает и с типизированными файлами
___ALex___
и ещё
если в файле хранятся числа из диапазона 1..50
то надо сменить "File of Integer" на "File of Byte"
дабы уменьшить размер файла
так как 1..50 * 2 < High(Byte) надеюсь такая абстрактная запись тебе будет ясна
Geroi
ох как ты достал, говоришь то, что говорят в 9 классе в школе.
Чё слабо вторую задачу сделать?  Мне слабо sad.gif, поэтому и зашёл сюда, чтоб помогли её сделать болле знающие люди, а Есле ты не можешь, то не к чему разводить балаган на форуме. Я сюда обратился за помощью, а не с тоболй рамсеть. А если ты малой недоносок, то мне  с тобой вообще  не очём говорить.   >:(
___ALex___
"ох как ты достал, говоришь то, что говорят в 9 классе в школе."
ты значит ещё младше раз это в 9 классе говорят или ты на уроки не ходишь учёничёк  
"Чё слабо вторую задачу сделать?"
легко)примитивщина
но тебе походу не под силу...
молись ламер чтобы тебе её кто-нибудь решил либо плати WM-ами
тогда я тебе её решу
P.S. таким ослам - только за лаве  
Geroi
Alex разве ты заходишь только поболтать? Что те не нравится?
я думаю не надо быть столь придирчивым к условию, я ведь его не сам выдумывал, MaxInt или т.п. Суть не в этом.
Сам ты нехороший человек, говориш чушь какую-то.
А на счёт того что Я немогу сделать, то Я сам сказал, что её слабо сделать.
Разве Я похож на  ламера? Если Я немогу сделать какие-то задачи, это не чего не значит.
И ещё ты нехороший человек, если такую как ты говориш прмитивщину за деньги делаешь.
Ivs
Ладно хватит паливать друг друга матом не из-за чего...
Вот прога, но я её мало тестил так что могут (да скорее всего они и есть) - быть глюки
Код

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___
опять очередной соискатель халявы получил что хотел...обидно
понимаю хоть бы сам что-то сделал...
ведь всегда видно людей у которых просто что-то не получается и им достаточно порой намёка для решения их задачи - таким людям грех не помочь(сами тебе в другой раз помогут) а таким...
всё равно бестолку - ну что Ivs тебе решил ну и? мозги-то его ты себе не приложишь! ну и ладно  :P
jackal
Alex или Ivs у вас есть какие нибудь мысли по моей задаче?(Тема : "Сырая прога") Только ответьте пожалуйста!
GLuk
По-моему реализация 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
GLuk, ты прав про единственность файла, я что-то пропустил это условие, мое решение прошу считать ошибочным.
AlaRic
for __Alex__ and Geroi: на форуме никаких разборок!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.