Помощь - Поиск - Пользователи - Календарь
Полная версия: бинарный файл, числа
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Катюша
В некотором бинарном файле записаны числа типа LongInt. Если в файле
есть хотя бы одно число, начинающееся цифрой 1 и содержащее цифры 2 и 3, упорядочить файл по неубыванию. Имя исходного файла и имя упорядоченного файла программа должна получать через командную строку. Не использовать массивы и динамическую память.


жду помощи =)
Digitalator
Цитата
упорядочить файл

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

прикольно, наверное сначала нужно установить дополнительное охлаждение на винт.
mlc
Сейчас Volvo опять в глаз даст smile.gif
uses crt;
var f,f2:file of longint;
b:boolean;
i,j,x,y:longint;
s:string;
begin
assign(f,paramstr(1)); reset(f);
assign(f2,paramstr(2)); rewrite(f2);
b:=false;
repeat
read(f,x); str(x,s);
if (s[1]='1') or (pos ('2',s)>0) or (pos('3',s)>0) then b:=true;
write(f2,x);
until eof(f);
if b then begin
for i:=0 to filesize(f2)-1 do
for j:=i+1 to filesize(f2) do begin
seek(f2,i); read(f2,x);
seek(f2,j); read(f2,y);
if x>y then begin
seek(f2,i); write (f2,y);
seek(f2,j); write (f2,x);
end;
end;
end;
close(f); close(f2);
end.
Катюша
пасип огромное.. разберусь.. дополнительно

а компактненько как! =)))
volvo
Цитата(Катюша @ 23.07.05 23:31)
а компактненько как! =)))

Компактненько, да неправильно smile.gif Задание какое было?
Цитата(Катюша @ 23.07.05 15:56)
... Если в файле есть хотя бы одно число, начинающееся цифрой 1 и содержащее цифры 2 и 3, упорядочить файл по неубыванию...


Что имеем?
Цитата(mlc @ 23.07.05 16:26)
...
if (s[1]='1') or (pos ('2',s)>0) or (pos('3',s)>0) then b:=true;
...

Понимаешь о чем я? То что получилось - "начинающееся цифрой 1 или содержащее цифры 2 или 3"
Аккуратнее надо условия читать ;)
mlc
Цитата(volvo @ 24.07.05 22:07)
Компактненько, да неправильно smile.gif Задание какое было?
Аккуратнее надо условия читать ;)

Ааа, сорри, ты прав, посыпаю голову пеплом smile.gif Как в воду глядел про глаз smile.gif Ну ор на на анд поменяй.

[Offtop удален: мой ответ был здесь достаточное время, чтобы ты успел его прочитать...]
Катюша
я нашла старую программу, писала ее почти 2 года назад.. показываю ее..

но она не совсем такая, как это условие..

но похожа.. хорошая прога?

uses crt,dos;
var f1,f2:file of word;
function kratno11(x:word):boolean;
var sum:byte;
begin
kratno11:=false;
sum:=0;
while x>=10 do
begin
sum:=sum+(x mod 10);
x:=x div 10;
end;
if (sum mod 11=0) then kratno11:=true;
end;
var number,n1,n2,tmp:word;
boolNum:boolean;
i,j,k:longInt;
begin
clrscr;
if ParamCount<2 then
begin
textcolor(red);
writeln('‘Їа ўЄ :');
textcolor(white);
writeln('?¬п Ёб室­®Ј® д ©« Ё Ё¬п гЇ®а冷祭­®Ј® д ©« Їа®Ја ¬¬ ¤®«¦­ Ї®«гз вм зҐаҐ§ '+
+'Є®¬ ­¤­го бва®Єг!');
ReadKey;
halt;
end;
assign(f1,paramStr(1));
assign(f2,paramStr(2));
{$I-}
reset(f1);
if ioresult <> 0 then
begin
writeln('” ©« ­Ґ ­ ©¤Ґ­!');
readkey;
halt;
end;
{$I-}
rewrite(f2);
boolNum:=false;
while not Eof(f1) do
begin
read(f1,number);
write(f2,number);
writeln(number);
if kratno11(number) then boolNum:=true;
end;
readKey;
if boolNum=true then
begin
writeln('Ќ ¦¬ЁвҐ «оЎго Є« ўЁиг ¤«п ўл室 ..');
writeln('‚ д ©«Ґ бҐвм зЁб« - б㬬 жЁда Є®в®але а ў­ 11- ­Ґ гЇ®а冷稢 Ґ¬');
readKey;
halt;
end;
readkey;
writeln('Sort');
for i:=0 to fileSize(f2)-2 do
begin
Seek(f2,i);
Read(f2,n1);
for j:=i+1 to fileSize(f2)-1 do
begin
Seek(f2,j);
Read(f2,n2);
if n1>n2 then
begin
tmp:=n1;
n1:=n2;
n2:=tmp;
Seek(f2,j);
Write(f2,n2);
Seek(f2,i);
Write(f2,n1);
end;
end;
end;
close(f1);
close(f2);
writeln('“бҐ!');
readkey;
end.


Malice
Цитата(Катюша @ 26.07.05 11:17)
но похожа.. хорошая прога?


Не понял, что значит хорошая. smile.gif
Поменяй функцию Kratno11 на свою по условию и можно здавать.
Катюша
гы..

это числа, который вводятся с командной строки.. СТОРМОЗИЛА unsure.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.